home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / sourcecode / games / duel sword doods.amos / duel sword doods.amosSourceCode < prev    next >
AMOS Source Code  |  1992-10-23  |  54KB  |  2,039 lines

  1. Rem - Duel Sword Doods - 
  2. Rem
  3. Rem started: 01-Mar-93 
  4. Rem finished: 09-Mar-93
  5. '
  6. Set Buffer 26
  7. '
  8. FLNG$="DSD-Grafix/"
  9. FLNM$="DSD-Music/"
  10. '
  11. Rem as some machines only have limited CHIP RAM, the 
  12. Rem following flag will enable a high-chip game or a 
  13. Rem low-chip game.  Even some A500 can handle the high 
  14. Rem chip game if only the AMOS1.3 is run ALONE!  But 
  15. Rem just in case you experience glitches and partial 
  16. Rem re-occurance of unwanted images on screen, then
  17. Rem set the flag to LOWCHIP, otherwise HIGHCHIP is 
  18. Rem best.
  19. '
  20. Rem CHIP = 0   (LOWCHIP, Both player will have same colour!)   
  21. Rem CHIP = 123 (HIGHCHIP, Players and enemies will have there own colour!)     
  22. '
  23. CHIP=0 : Rem set to 123 if want High Chip Game
  24. '
  25. '
  26. Rem due to various incompatable thingies 
  27. Rem you may switch med music on and off
  28. Rem BUT MUST MAKE SURE YOUR AMOS CAN USE IT
  29. '
  30. Rem IMPORTANT NOTICE TO ALL AMOS PROFESSIONAL OWNERS 
  31. Rem
  32. Rem At the moment, all command concerning MED have 
  33. Rem been removed so the old AMOS may load the prog 
  34. Rem source and run normally. 
  35. Rem
  36. Rem To get some music running(as the game was meant
  37. Rem to hold, simply set the variable MEDON to 123. 
  38. Rem Also, remove the ''''' from the program
  39. Rem subroutine _MEDMAGIC(end of listing!)  
  40. Rem  
  41. Rem I'm sorry music is not available for the old AMOS
  42. Rem but the 'tracker' clone modules present limitations I find   
  43. Rem un-acceptable..  
  44. MEDON=0
  45. '
  46. '
  47. Screen Open 0,320,256,16,Lowres
  48. Screen 0 : Cls 0 : Screen Hide 0 : Hide 
  49. '
  50. Unpack 7 To 0 : Screen Hide 0
  51. Music 1
  52. Wait 380
  53. Screen Show 0
  54. Wait 300
  55. Music Off 
  56. Fade 1
  57. '
  58. LAST=0 : Rem save 85K 
  59. If LAST=123
  60.    Erase 3 : Erase 7
  61. End If 
  62. '
  63. Rem POSITION OF SWORD
  64. Dim SW(30,6) : Rem enable / x / y pos 
  65. Dim SS(5,4)
  66. '
  67. Dim PL(2,22),C(15)
  68. Dim NM(7,7),NO(9,7)
  69. '
  70. '
  71. AA=321 : Gosub _MEDMAGIC
  72. '
  73. Gosub _GRABGRAFIX
  74. Gosub _PREPARESWORDARRAY
  75. Gosub _SETTUPSCREEN
  76. Gosub _CONFIGURENUMBER
  77. '
  78. Rem big main things
  79. FLOORY=170 : MUS=1
  80. '
  81. Screen Hide 1 : Screen Hide 0
  82. '
  83. MASTERQUIT=0
  84. While MASTERQUIT<>123
  85.  '
  86.  LEVEL=20
  87.  '
  88.  Gosub _TITLEPAGE
  89.  Fade 3 : Wait 45
  90.  Gosub _CHOOSE
  91.  Fade 3 : Wait 45
  92.  '
  93.  For T=1 To 2
  94.   PL(T,21)=0 : Rem no score 
  95.  Next T
  96.  '
  97.  Screen 1
  98.  '
  99.  SIRQUIT=0
  100.  While SIRQUIT<>123
  101.  '
  102.  Rem settup individual fights here
  103.  '
  104.  CUL1=$A
  105.  C(6)=CUL1
  106.  If CONTROL=1
  107.     CUL2=$D0
  108.     C(7)=CUL2
  109.  Else 
  110.     If LEVEL=20 : CUL2=$D00 : End If 
  111.     If LEVEL=30 : CUL2=$DD0 : End If 
  112.     If LEVEL=40 : CUL2=$DD : End If 
  113.     If LEVEL=50 : CUL2=$DAA : End If 
  114.     If LEVEL=60 : CUL2=$A55 : End If 
  115.     If LEVEL=70 : CUL2=$72E : End If 
  116.     If LEVEL=80 : CUL2=$AF2 : End If 
  117.     If LEVEL=90 : CUL2=$31B : End If 
  118.     If LEVEL=100 : CUL2=$EEE : End If 
  119.     C(7)=CUL2
  120.  End If 
  121.  '
  122.  Gosub _SETTUPPLAYERS
  123.  Gosub _RENEWSCREEN
  124.  Gosub _GIVECOLOURS
  125.  '
  126.  REWARD=0 : GAMECOUNT=1
  127.  CL0PBIT=1 : CL0P=0
  128.  SPIKE1=0 : SPIKE2=0
  129.  '
  130.  Colour 6,CUL1 : Colour 7,CUL2
  131.  '
  132.  MISTERQUIT=0
  133.  While MISTERQUIT<>123
  134.   '
  135.   K$=Inkey$
  136.   AA=1 : Gosub _MEDMAGIC
  137.   If(K$="q") : SIRQUIT=123 : MISTERQUIT=123 : End If 
  138.   If(K$="p") or(K$="P")
  139.     Colour 0,$A
  140.     K$=""
  141.     While((K$<>"p") and(K$<>"P")) : K$=Inkey$ : Wend 
  142.     Colour 0,$0
  143.   End If 
  144.   '
  145.   Bob Clear 
  146.   '
  147.   Gosub _SPIKECHECK
  148.   Gosub _CYCLECLIPINSTRUCT
  149.   '
  150.   For CHAR=1 To 2
  151.    '
  152.    If CHAR=1 : CHARX=2 : Else CHARX=1 : End If 
  153.    '
  154.    Gosub _MODESWITCHER
  155.    Gosub _READJOYSTICK
  156.    Gosub _REACTIONING
  157.    Gosub _NEARINTERUPT
  158.    Gosub _COLLISIONS
  159.    Gosub _SCANFORWIN
  160.    '
  161.    Gosub _DOBOBS
  162.    Gosub _HITPOINTUPDATE
  163.   Next CHAR
  164.   '
  165.   Rem variable increementors 
  166.   If GAMECOUNT>0 : GAMECOUNT=GAMECOUNT+1 : End If 
  167.   '
  168.   Bob Draw 
  169.   Screen Swap : Wait Vbl 
  170.   '
  171.  Wend 
  172.  '
  173.  Wait 50
  174.  Fade 3 : Wait 45
  175.  '
  176.  If REWARD=1
  177.     PL(1,21)=PL(1,21)+1
  178.     If CONTROL=2
  179.        LEVEL=LEVEL+10
  180.     End If 
  181.  End If 
  182.  If REWARD=2
  183.     PL(2,21)=PL(2,21)+1
  184.  End If 
  185.  '
  186.  Rem the first to 9, wins 
  187.  WINNER=0
  188.  If PL(1,21)=9
  189.     WINNER=1
  190.  End If 
  191.  If PL(2,21)=9
  192.     WINNER=2
  193.  End If 
  194.  If WINNER<>0
  195.    Gosub _WINNINGSCREEN
  196.    Gosub _GRABGRAFIX
  197.    SIRQUIT=123
  198.  End If 
  199.  '
  200.  Wend 
  201.  '
  202. Wend 
  203. '
  204. End 
  205. '
  206. '
  207. '
  208. _ENEMYACTION:
  209.  '
  210.  RACT=Int(Rnd(100))
  211.  If RACT<(LEVEL)
  212.     '
  213.     DR=0
  214.     '
  215.     If PL(CHAR,1)>=PL(CHARX,1)
  216.      DISTANCE=PL(CHAR,1)-PL(CHARX,1)
  217.     Else 
  218.      DISTANCE=PL(CHARX,1)-PL(CHAR,1)
  219.     End If 
  220.     '
  221.     If DISTANCE>100 : DR=4 : End If 
  222.     '
  223.     If LEVEL>=20 and LEVEL<=30
  224.       If PL(CHAR,10)>=1
  225.        If DISTANCE<100 : DR=22 : End If 
  226.        If DISTANCE<80 or PL(CHARX,3)=5 : DR=21 : End If 
  227.       End If 
  228.       If PL(CHAR,10)=0
  229.        If DISTANCE>80 : DR=5 : End If 
  230.        If DISTANCE<60 : DR=22 : End If 
  231.        If DISTANCE<50 or PL(CHARX,3)=5 : DR=21 : End If 
  232.        If DISTANCE<20 : DR=18 : End If 
  233.       End If 
  234.     End If 
  235.     '
  236.     If LEVEL>=40 and LEVEL<=50
  237.       If PL(CHAR,10)>=1
  238.        If DISTANCE<100 : DR=22 : End If 
  239.        If DISTANCE<80 or PL(CHARX,3)=5 : DR=21 : End If 
  240.       End If 
  241.       If PL(CHAR,10)=0
  242.        If DISTANCE>80 : DR=5 : End If 
  243.        If DISTANCE<60 : DR=22 : End If 
  244.        If DISTANCE<50 or PL(CHARX,3)=5 : DR=21 : End If 
  245.        If DISTANCE<20 : DR=18 : End If 
  246.       End If 
  247.       If PL(CHARX,3)=15 : DR=2 : End If 
  248.       If PL(CHARX,3)=14 : DR=2 : End If 
  249.     End If 
  250.     '
  251.     If LEVEL>=60 and LEVEL<=70
  252.       If PL(CHAR,10)>=1
  253.        If DISTANCE<100 : DR=22 : End If 
  254.        If DISTANCE<80 or PL(CHARX,3)=5 : DR=21 : End If 
  255.       End If 
  256.       If PL(CHAR,10)=0
  257.        If DISTANCE>80 : DR=5 : End If 
  258.        If DISTANCE<60 : DR=22 : End If 
  259.        If DISTANCE<50 or PL(CHARX,3)=5 : DR=21 : End If 
  260.        If DISTANCE<20 : DR=18 : End If 
  261.       End If 
  262.       If PL(CHARX,3)=15 : DR=2 : End If 
  263.       If PL(CHARX,3)=14 : DR=2 : End If 
  264.     End If 
  265.     '
  266.     If LEVEL>=80 and LEVEL<=100
  267.       If PL(CHAR,10)>=1
  268.        If DISTANCE<100 : DR=22 : End If 
  269.        If DISTANCE<80 or PL(CHARX,3)=5 : DR=21 : End If 
  270.       End If 
  271.       If PL(CHAR,10)=0
  272.        If DISTANCE>80 : DR=5 : End If 
  273.        If DISTANCE<60 : DR=22 : End If 
  274.        If DISTANCE<50 or PL(CHARX,3)=5 : DR=21 : End If 
  275.        If DISTANCE<20 : DR=18 : End If 
  276.       End If 
  277.       If PL(CHARX,3)=15 or PL(CHARX,19)<>0 : DR=2 : End If 
  278.       If PL(CHAR,10)<2
  279.          SDIS=2000
  280.          For T=1 To 4
  281.           If SS(T,1)>=PL(CHAR,1)-30
  282.            If(SS(T,1)-PL(CHAR,1))<SDIS and SS(T,1)<285 : SGO=T : SDIS=(SS(T,1)-PL(CHAR,1)) : End If 
  283.           End If 
  284.          Next T
  285.          If SDIS<>2000 and PL(CHAR,1)-30<SS(SGO,1) : DR=8 : End If 
  286.          If SDIS<>2000 and PL(CHAR,1)<SS(SGO,1)+10 and PL(CHAR,1)>SS(SGO,1)-10 : DR=2 : End If 
  287.       End If 
  288.       If PL(CHARX,3)=14 and DISTANCE>70 : DR=2 : End If 
  289.       If PL(CHARX,3)=14 and DISTANCE<=70 : DR=21 : End If 
  290.     End If 
  291.     '
  292.     '
  293.     If PL(CHAR,6)=8
  294.       XDR=DR
  295.       If DR=4 : XDR=8 : End If 
  296.       If DR=5 : XDR=9 : End If 
  297.       If DR=6 : XDR=10 : End If 
  298.       If DR=21 : XDR=24 : End If 
  299.       If DR=22 : XDR=25 : End If 
  300.       If DR=23 : XDR=26 : End If 
  301.       DR=XDR
  302.     End If 
  303.     '
  304.  End If 
  305.  '
  306. Return 
  307. '
  308. '
  309. '
  310. _SPIKECHECK:
  311.  '
  312.  If GAMECOUNT=0 and CL0P=0
  313.   ENV=ENV+1
  314.   If ENV<0 or ENV>5
  315.     ENV=0
  316.     '
  317.     RENV=1+Int(Rnd(99)) : RENVR=1+Int(Rnd(1))
  318.     If RENV<50 and((SPIKE1=0 and RENVR=1) or(SPIKE2=0 and RENVR=2)) : CL0P=2 : CL0PR=RENVR : CL0PBIT=1 : End If 
  319.     If PL(1,3)<>55 and PL(2,3)<>55
  320.       If RENV>50 and((SPIKE1=1 and CL0PR=1) or(SPIKE2=1 and CL0PR=2)) : CL0P=202 : CL0PBIT=1 : End If 
  321.     End If 
  322.     '
  323.   End If 
  324.  End If 
  325.  '
  326.  Rem parimitor check
  327.  If PL(1,1)<-20 : PL(1,1)=-20 : End If 
  328.  If PL(1,1)>340 : PL(1,1)=340 : End If 
  329.  If PL(2,1)<-20 : PL(2,1)=-20 : End If 
  330.  If PL(2,1)>340 : PL(2,1)=340 : End If 
  331.  '
  332. Return 
  333. '
  334. '
  335. _CYCLECLIPINSTRUCT:
  336.  '  
  337.  If GAMECOUNT>10 : GAMECOUNT=0 : CL0P=5 : CL0PR=1 : End If 
  338.  '
  339.  If CL0P<>0 : Gosub _CYCLECLIP : End If 
  340.  '
  341. Return 
  342. '
  343. '
  344. '
  345. _SCANFORWIN:
  346.  '
  347.  If PL(CHAR,20)<=0 and PL(CHAR,0)<>0 and REWARD=0
  348.    If PL(CHAR,2)>=FLOORY
  349.     If PL(CHAR,20)>-20
  350.        PL(CHAR,0)=0
  351.        PL(CHAR,20)=0 : PL(CHAR,3)=52 : PL(CHAR,4)=1
  352.     Else 
  353.        If PL(CHAR,20)<>-50
  354.          PL(CHAR,0)=0
  355.          PL(CHAR,20)=0 : PL(CHAR,3)=54 : PL(CHAR,4)=1
  356.        Else 
  357.          PL(CHAR,0)=0
  358.          Rem wait while opponent victots
  359.        End If 
  360.     End If 
  361.    Else 
  362.     PL(CHAR,0)=0
  363.     PL(CHAR,20)=0 : PL(CHAR,3)=56 : PL(CHAR,4)=1
  364.    End If 
  365.  End If 
  366.  '
  367.  If REWARD<>0 and PL(REWARD,3)=1 and REWARD=CHAR : PL(REWARD,3)=16 : PL(REWARD,4)=1 : End If 
  368.  '
  369.  If PL(1,20)<=0 and PL(2,20)<=0
  370.     MISTERQUIT=123
  371.  End If 
  372.  '
  373. Return 
  374. '
  375. '
  376. '
  377. _MODESWITCHER:
  378.  '
  379.  If(PL(1,3)<10 or PL(1,3)>11) and(PL(2,3)<10 or PL(2,3)>11)
  380.   Rem change mode due to player position 
  381.   If PL(1,1)>=PL(2,1)
  382.      M0DE=1 : M0DEX=2 : PL(1,6)=4 : PL(2,6)=8
  383.   Else 
  384.      M0DE=2 : M0DEX=1 : PL(1,6)=8 : PL(2,6)=4
  385.   End If 
  386.  End If 
  387.  '
  388. Return 
  389. '
  390. '
  391. _COLLISIONS:
  392.  '
  393.  If PL(CHARX,3)>=50
  394.   Rem doint do nout
  395.  Else 
  396.   If PL(CHARX,3)=10 or PL(CHARX,3)=11 or PL(CHARX,3)=31 or(PL(CHARX,3)=5 and PL(CHARX,10)>=1)
  397.      Gosub _COLLISIONSAIR
  398.   Else 
  399.      Gosub _COLLISIONSGROUND
  400.   End If 
  401.  End If 
  402.  '
  403. Return 
  404. '
  405. _COLLISIONSAIR:
  406.  '
  407.  Rem high punch/stab detect   
  408.  If PL(CHAR,10)=0 : RANGE1=45 : Else RANGE1=65 : End If 
  409.  If PL(CHARX,3)=12 and PL(CHARX,3)=8 : B=123 : Else B=0 : End If 
  410.  If PL(CHAR,3)=5 and PL(CHAR,4)=3 and A<RANGE1 and B<>123
  411.     PL(CHARX,4)=1 : Gosub _HARDHIT
  412.     If PL(CHAR,10)<>0 : PL(CHARX,3)=56 : End If 
  413.     If PL(CHAR,10)=0 : PL(CHARX,3)=56 : End If 
  414.  End If 
  415.  '
  416.  Rem flying sword 
  417.  If PL(CHAR,19)>=100 and PL(CHAR,17)<38
  418.    If PL(CHARX,3)=12 or PL(CHARX,3)=8 : B=123 : Else B=0 : End If 
  419.    If(PL(CHAR,15)-PL(CHARX,1)<10) and(PL(CHAR,15)-PL(CHARX,1)>-15) and B<>123
  420.      PL(CHARX,3)=56 : PL(CHARX,4)=1 : Gosub _HARDHIT
  421.    End If 
  422.  End If 
  423.  '
  424.  Rem spikes 
  425.  If PL(CHARX,0)=1 and PL(CHARX,2)>165
  426.   If SPIKE1=1 and PL(CHARX,1)<50 and PL(CHARX,6)=8
  427.      PL(CHARX,3)=55 : PL(CHARX,4)=1
  428.   End If 
  429.   If SPIKE2=1 and PL(CHARX,1)>280 and PL(CHARX,6)=4
  430.      PL(CHARX,3)=55 : PL(CHARX,4)=1
  431.   End If 
  432.  End If 
  433.  '
  434. Return 
  435. '
  436. _COLLISIONSGROUND:
  437.  '
  438.  Rem collisions based on own 3 num and 4 position and 
  439.  Rem your 1 pos and enemy 1 pos and enemy 3 num 
  440.  '
  441.  Rem find different(positive) 
  442.  If PL(CHARX,1)>PL(CHAR,1)
  443.    A=PL(CHARX,1)-PL(CHAR,1)
  444.  Else 
  445.    A=PL(CHAR,1)-PL(CHARX,1)
  446.  End If 
  447.  Rem B will be flag indecating successful defence 
  448.  '
  449.  Rem low punch/stab detect  
  450.  If PL(CHAR,10)=0 : RANGE1=50 : Else RANGE1=80 : End If 
  451.  If PL(CHARX,3)=13 : B=123 : Else B=0 : End If 
  452.  If PL(CHAR,3)=4 and PL(CHAR,4)=3 and A<RANGE1 and B<>123
  453.     PL(CHARX,3)=50 : PL(CHARX,4)=1 : Gosub _SMALLHIT
  454.  End If 
  455.  '
  456.  Rem medium pary detect   
  457.  RANGE1=60
  458.  If PL(CHARX,3)=12 : B=123 : Else B=0 : End If 
  459.  If PL(CHAR,3)=9 and PL(CHAR,4)=2 and A<RANGE1 and B<>123
  460.     PL(CHARX,3)=50
  461.     PL(CHARX,4)=1 : Gosub _MEDIUMHIT
  462.  End If 
  463.  '
  464.  Rem high punch/stab detect   
  465.  If PL(CHAR,10)=0 : RANGE1=45 : Else RANGE1=65 : End If 
  466.  If PL(CHARX,3)=12 and PL(CHARX,3)=8 : B=123 : Else B=0 : End If 
  467.  If PL(CHAR,3)=5 and PL(CHAR,4)=3 and A<RANGE1 and B<>123
  468.     PL(CHARX,4)=1 : Gosub _HARDHIT
  469.     If PL(CHAR,10)<>0 : PL(CHARX,3)=52 : End If 
  470.     If PL(CHAR,10)=0 : PL(CHARX,3)=50 : End If 
  471.  End If 
  472.  '
  473.  Rem kick/special detect    
  474.  If PL(CHAR,10)=0
  475.     RANGE1=55 : B=0
  476.     If PL(CHAR,3)=6 and PL(CHAR,4)=2 and A<RANGE1 and B<>123
  477.         PL(CHARX,3)=52 : PL(CHARX,4)=1 : Gosub _SMALLHIT
  478.     End If 
  479.  End If 
  480.  If PL(CHAR,10)>0
  481.     RANGE1=90
  482.     If PL(CHARX,3)=12 or PL(CHARX,3)=8 : B=123 : Else B=0 : End If 
  483.     If PL(CHAR,3)=14 and PL(CHAR,4)=16 and A<RANGE1 and B<>123
  484.         PL(CHARX,3)=54 : PL(CHARX,4)=1 : Gosub _LETHALHIT
  485.     End If 
  486.  End If 
  487.  '
  488.  Rem flying sword 
  489.  If PL(CHAR,19)>=100 and PL(CHAR,17)<38
  490.    If PL(CHARX,3)=12 or PL(CHARX,3)=8 : B=123 : Else B=0 : End If 
  491.    If(PL(CHAR,15)-PL(CHARX,1)<10) and(PL(CHAR,15)-PL(CHARX,1)>-15) and B<>123
  492.      PL(CHARX,3)=52 : PL(CHARX,4)=1 : Gosub _HARDHIT
  493.    End If 
  494.  End If 
  495.  '
  496.  Rem spikes 
  497.  If PL(CHARX,0)=1
  498.   If SPIKE1=1 and PL(CHARX,1)<50 and PL(CHARX,6)=8
  499.      PL(CHARX,3)=55 : PL(CHARX,4)=1
  500.   End If 
  501.   If SPIKE2=1 and PL(CHARX,1)>280 and PL(CHARX,6)=4
  502.      PL(CHARX,3)=55 : PL(CHARX,4)=1
  503.   End If 
  504.  End If 
  505.  '
  506.  '
  507.  Rem pickup 
  508.  If PL(CHAR,10)<2 and PL(CHAR,19)=0
  509.    TT=0
  510.    For T=1 To 4
  511.     If TT=0 and PL(CHAR,3)=8 and SS(T,0)>0 and SS(T,1)-20<PL(CHAR,1) and SS(T,1)+20>PL(CHAR,1)
  512.        Bob Off 12+T : Wait Vbl 
  513.        PL(CHAR,10)=PL(CHAR,10)+1
  514.        SS(T,0)=0 : SS(T,1)=0 : SS(T,2)=0 : SS(T,3)=0
  515.        TT=1
  516.     End If 
  517.    Next T
  518.  End If 
  519.  '
  520. Return 
  521. '
  522. _SMALLHIT:
  523.   PL(CHARX,20)=PL(CHARX,20)-5
  524.   HPUPDATE=CHARX : HPUP=3
  525. Return 
  526. _MEDIUMHIT:
  527.   PL(CHARX,20)=PL(CHARX,20)-10
  528.   HPUPDATE=CHARX : HPUP=3
  529. Return 
  530. _HARDHIT:
  531.   PL(CHARX,20)=PL(CHARX,20)-15
  532.   HPUPDATE=CHARX : HPUP=3
  533. Return 
  534. _LETHALHIT:
  535.   PL(CHARX,20)=-100
  536.   HPUPDATE=CHARX : HPUP=5
  537. Return 
  538. '
  539. '
  540. _REACTIONING:
  541.  '
  542.  If PL(CHAR,3)=0
  543.    Rem end of game or fight has ben signalled 
  544.    PL(CHAR,10)=-1
  545.    PL(CHAR,5)=11 : MISTERQUIT=123
  546.  End If 
  547.  '
  548.  If PL(CHAR,3)=1
  549.    If DR<>0
  550.     '
  551.     If CHAR=M0DEX
  552.      If DR=18 and PL(CHAR,10)=0 : PL(CHAR,3)=6 : End If 
  553.      If DR=18 and PL(CHAR,10)>0 : PL(CHAR,3)=14 : End If 
  554.      If DR=2 : PL(CHAR,3)=8 : End If 
  555.      If DR=5 : PL(CHAR,3)=10 : End If 
  556.      If DR=9 : PL(CHAR,3)=11 : End If 
  557.      If DR=1 : PL(CHAR,3)=31 : End If 
  558.      If DR=6 and PL(CHAR,10)=2 : PL(CHAR,3)=12 : End If 
  559.      If DR=10 and PL(CHAR,10)=2 : PL(CHAR,3)=13 : End If 
  560.      If DR=4 : PL(CHAR,3)=3 : End If 
  561.      If DR=8 : PL(CHAR,3)=2 : End If 
  562.      If DR=24 and PL(CHAR,10)>=1 : PL(CHAR,3)=9 : End If 
  563.      If DR=25 : PL(CHAR,3)=5 : End If 
  564.      If DR=26 : PL(CHAR,3)=4 : End If 
  565.      If DR=17 and PL(CHAR,10)=2 : PL(CHAR,3)=15 : End If 
  566.     End If 
  567.     If CHAR=M0DE
  568.      If DR=18 and PL(CHAR,10)=0 : PL(CHAR,3)=6 : End If 
  569.      If DR=18 and PL(CHAR,10)>0 : PL(CHAR,3)=14 : End If 
  570.      If DR=2 : PL(CHAR,3)=8 : End If 
  571.      If DR=5 : PL(CHAR,3)=10 : End If 
  572.      If DR=9 : PL(CHAR,3)=11 : End If 
  573.      If DR=1 : PL(CHAR,3)=31 : End If 
  574.      If DR=6 and PL(CHAR,10)=2 : PL(CHAR,3)=12 : End If 
  575.      If DR=10 and PL(CHAR,10)=2 : PL(CHAR,3)=13 : End If 
  576.      If DR=4 : PL(CHAR,3)=3 : End If 
  577.      If DR=8 : PL(CHAR,3)=2 : End If 
  578.      If DR=24 and PL(CHAR,10)>=1 : PL(CHAR,3)=9 : End If 
  579.      If DR=25 : PL(CHAR,3)=5 : End If 
  580.      If DR=26 : PL(CHAR,3)=4 : End If 
  581.      If DR=17 and PL(CHAR,10)=2 : PL(CHAR,3)=15 : End If 
  582.     End If 
  583.     '  
  584.    Else 
  585.     PL(CHAR,5)=1 : PL(CHAR,4)=1
  586.    End If 
  587.  End If 
  588.  '
  589.  If PL(CHAR,3)=2
  590.    If DR=8
  591.     If CHAR=M0DEX : DX=5 : End If 
  592.     If CHAR=M0DE : DX=-5 : End If 
  593.     If PL(CHAR,4)=1 : PL(CHAR,5)=2 : PL(CHAR,1)=PL(CHAR,1)+DX : End If 
  594.     If PL(CHAR,4)=3 : PL(CHAR,5)=3 : PL(CHAR,1)=PL(CHAR,1)+DX : End If 
  595.     If PL(CHAR,4)=5 : PL(CHAR,5)=2 : PL(CHAR,1)=PL(CHAR,1)+DX : End If 
  596.     If PL(CHAR,4)=7 : PL(CHAR,5)=1 : PL(CHAR,1)=PL(CHAR,1)+DX : End If 
  597.     PL(CHAR,4)=PL(CHAR,4)+1 : If PL(CHAR,4)>8 : PL(CHAR,4)=1 : End If 
  598.    Else 
  599.     PL(CHAR,3)=1 : PL(CHAR,4)=1
  600.    End If 
  601.  End If 
  602.  '
  603.  If PL(CHAR,3)=3
  604.    If DR=4
  605.     If CHAR=M0DEX : DX=-8 : End If 
  606.     If CHAR=M0DE : DX=8 : End If 
  607.     If PL(CHAR,4)=1 : PL(CHAR,5)=3 : PL(CHAR,1)=PL(CHAR,1)+DX : End If 
  608.     If PL(CHAR,4)=3 : PL(CHAR,5)=2 : PL(CHAR,1)=PL(CHAR,1)+DX : End If 
  609.     If PL(CHAR,4)=5 : PL(CHAR,5)=1 : PL(CHAR,1)=PL(CHAR,1)+DX : End If 
  610.     If PL(CHAR,4)=7 : PL(CHAR,5)=2 : PL(CHAR,1)=PL(CHAR,1)+DX : End If 
  611.     PL(CHAR,4)=PL(CHAR,4)+1 : If PL(CHAR,4)>8 : PL(CHAR,4)=1 : End If 
  612.    Else 
  613.     PL(CHAR,3)=1 : PL(CHAR,4)=1
  614.    End If 
  615.  End If 
  616.  '
  617.  '
  618.  Rem low punch
  619.  If PL(CHAR,3)=4
  620.    If PL(CHAR,4)<>0
  621.     If CHAR=M0DEX : DX1=8 : DX2=15 : DX3=-15 : DX4=-8 : End If 
  622.     If CHAR=M0DE : DX1=-8 : DX2=-15 : DX3=15 : DX4=8 : End If 
  623.     If PL(CHAR,4)=1 : PL(CHAR,5)=7 : PL(CHAR,1)=PL(CHAR,1)+DX1 : End If 
  624.     If PL(CHAR,4)=2 : PL(CHAR,5)=8 : PL(CHAR,1)=PL(CHAR,1)+DX2 : End If 
  625.     If PL(CHAR,4)=3 : PL(CHAR,5)=7 : PL(CHAR,1)=PL(CHAR,1)+DX3 : End If 
  626.     If PL(CHAR,4)=4 : PL(CHAR,5)=1 : PL(CHAR,1)=PL(CHAR,1)+DX4 : End If 
  627.     PL(CHAR,4)=PL(CHAR,4)+1
  628.     '
  629.     If PL(CHAR,4)>5 : PL(CHAR,4)=1 : PL(CHAR,3)=1 : End If 
  630.     '
  631.    End If 
  632.  End If 
  633.  '
  634.  Rem high punch 
  635.  If PL(CHAR,3)=5
  636.    If PL(CHAR,4)<>0
  637.     If CHAR=M0DEX : DX1=5 : DX2=20 : DX3=-25 : End If 
  638.     If CHAR=M0DE : DX1=-5 : DX2=-20 : DX3=25 : End If 
  639.     If PL(CHAR,4)=1 : PL(CHAR,5)=12 : PL(CHAR,1)=PL(CHAR,1)+DX1 : End If 
  640.     If PL(CHAR,4)=2 : PL(CHAR,5)=13 : PL(CHAR,1)=PL(CHAR,1)+DX2 : End If 
  641.     If PL(CHAR,4)=3 : PL(CHAR,5)=1 : PL(CHAR,1)=PL(CHAR,1)+DX3 : End If 
  642.     PL(CHAR,4)=PL(CHAR,4)+1
  643.     '
  644.     If PL(CHAR,4)>4 : PL(CHAR,4)=1 : PL(CHAR,3)=1 : End If 
  645.     '
  646.    End If 
  647.  End If 
  648.  '
  649.  Rem kick 
  650.  If PL(CHAR,3)=6
  651.    If PL(CHAR,4)<>0
  652.     If CHAR=M0DEX : DX1=10 : DX2=20 : DX3=-30 : End If 
  653.     If CHAR=M0DE : DX1=-10 : DX2=-20 : DX3=30 : End If 
  654.     If PL(CHAR,4)=1 : PL(CHAR,5)=9 : PL(CHAR,1)=PL(CHAR,1)+DX1 : End If 
  655.     If PL(CHAR,4)=2 : PL(CHAR,5)=10 : PL(CHAR,1)=PL(CHAR,1)+DX2 : End If 
  656.     If PL(CHAR,4)=4 : PL(CHAR,5)=1 : PL(CHAR,1)=PL(CHAR,1)+DX3 : End If 
  657.     PL(CHAR,4)=PL(CHAR,4)+1
  658.     '
  659.     If PL(CHAR,4)>5 : PL(CHAR,4)=1 : PL(CHAR,3)=1 : End If 
  660.     '
  661.    End If 
  662.  End If 
  663.  '
  664.  Rem duck 
  665.  If PL(CHAR,3)=8
  666.    If PL(CHAR,4)<>0
  667.     If PL(CHAR,4)=1 : PL(CHAR,4)=2 : PL(CHAR,5)=7 : End If 
  668.     '
  669.     If DR<>2 and PL(CHAR,4)=2 : PL(CHAR,4)=3 : End If 
  670.     '  
  671.     If PL(CHAR,4)>2 : PL(CHAR,4)=PL(CHAR,4)+1 : End If 
  672.     If PL(CHAR,4)>5 : PL(CHAR,5)=1 : PL(CHAR,4)=1 : PL(CHAR,3)=1 : End If 
  673.    End If 
  674.  End If 
  675.  '
  676.  Rem pary sword 
  677.  If PL(CHAR,3)=9
  678.    If PL(CHAR,4)<>0
  679.     '
  680.     If CHAR=M0DEX : DX1=-2 : DX2=2 : End If 
  681.     If CHAR=M0DE : DX1=2 : DX2=-2 : End If 
  682.     Rem conditional actions of pary  
  683.     If DR=8 : PL(CHAR,4)=1 : PL(CHAR,5)=22 : PL(CHAR,1)=PL(CHAR,1) : End If 
  684.     If DR=24 and PL(CHAR,4)=1 : PL(CHAR,4)=2 : PL(CHAR,5)=23 : PL(CHAR,1)=PL(CHAR,1)+DX2 : End If 
  685.     '
  686.     If DR<>8 and DR<>24 : PL(CHAR,4)=1 : PL(CHAR,3)=1 : End If 
  687.     '
  688.    End If 
  689.  End If 
  690.  '
  691.  Rem block high 
  692.  If PL(CHAR,3)=12
  693.    If PL(CHAR,4)<>0
  694.     If PL(CHAR,4)=1 : PL(CHAR,5)=24 : End If 
  695.     '
  696.     PL(CHAR,4)=PL(CHAR,4)+1
  697.     If PL(CHAR,4)>5 : PL(CHAR,4)=1 : PL(CHAR,3)=1 : End If 
  698.    End If 
  699.  End If 
  700.  '
  701.  Rem block low  
  702.  If PL(CHAR,3)=13
  703.    If PL(CHAR,4)<>0
  704.     If PL(CHAR,4)=1 : PL(CHAR,5)=25 : End If 
  705.     '
  706.     PL(CHAR,4)=PL(CHAR,4)+1
  707.     If PL(CHAR,4)>5 : PL(CHAR,4)=1 : PL(CHAR,3)=1 : End If 
  708.    End If 
  709.  End If 
  710.  '
  711.  '
  712.  Rem jump up
  713.  '
  714.  If PL(CHAR,3)=10
  715.    If PL(CHAR,4)<>0
  716.     If CHAR=M0DEX : DX=-5 : End If 
  717.     If CHAR=M0DE : DX=5 : End If 
  718.     If PL(CHAR,4)=1 : PL(CHAR,5)=4 : End If 
  719.     If PL(CHAR,4)=1 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)-10 : End If 
  720.     If PL(CHAR,4)=2 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)-8 : End If 
  721.     If PL(CHAR,4)=3 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)-6 : End If 
  722.     If PL(CHAR,4)=4 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)-2 : End If 
  723.     If PL(CHAR,4)=5 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)-1 : End If 
  724.     If PL(CHAR,4)=6 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)-0 : End If 
  725.     If PL(CHAR,4)=9 : PL(CHAR,5)=5 : End If 
  726.     If PL(CHAR,4)=7 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)+1 : End If 
  727.     If PL(CHAR,4)=8 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)+2 : End If 
  728.     If PL(CHAR,4)=9 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)+6 : End If 
  729.     If PL(CHAR,4)=10 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)+8 : End If 
  730.     If PL(CHAR,4)=11 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)+10 : End If 
  731.     If PL(CHAR,4)=12 : PL(CHAR,5)=7 : End If 
  732.  
  733.     PL(CHAR,4)=PL(CHAR,4)+1
  734.     '
  735.     If PL(CHAR,4)>13 : PL(CHAR,4)=1 : PL(CHAR,3)=1 : End If 
  736.     '
  737.    End If 
  738.  End If 
  739.  '
  740.  If PL(CHAR,3)=11
  741.    If PL(CHAR,4)<>0
  742.     If CHAR=M0DEX : DX=5 : End If 
  743.     If CHAR=M0DE : DX=-5 : End If 
  744.     If PL(CHAR,4)=1 : PL(CHAR,5)=4 : End If 
  745.     If PL(CHAR,4)=1 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)-10 : End If 
  746.     If PL(CHAR,4)=2 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)-8 : End If 
  747.     If PL(CHAR,4)=3 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)-6 : End If 
  748.     If PL(CHAR,4)=4 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)-2 : End If 
  749.     If PL(CHAR,4)=5 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)-1 : End If 
  750.     If PL(CHAR,4)=6 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)-0 : End If 
  751.     If PL(CHAR,4)=9 : PL(CHAR,5)=5 : End If 
  752.     If PL(CHAR,4)=7 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)+1 : End If 
  753.     If PL(CHAR,4)=8 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)+2 : End If 
  754.     If PL(CHAR,4)=9 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)+6 : End If 
  755.     If PL(CHAR,4)=10 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)+8 : End If 
  756.     If PL(CHAR,4)=11 : PL(CHAR,1)=PL(CHAR,1)+DX : PL(CHAR,2)=PL(CHAR,2)+10 : End If 
  757.     If PL(CHAR,4)=12 : PL(CHAR,5)=7 : End If 
  758.     '
  759.     PL(CHAR,4)=PL(CHAR,4)+1
  760.     '
  761.     If PL(CHAR,4)>13 : PL(CHAR,4)=1 : PL(CHAR,3)=1 : End If 
  762.     '
  763.    End If 
  764.  End If 
  765.  '  
  766.  Rem jump stright up
  767.  If PL(CHAR,3)=31
  768.    If PL(CHAR,4)<>0
  769.     If PL(CHAR,4)=1 : PL(CHAR,5)=4 : End If 
  770.     If PL(CHAR,4)=1 : PL(CHAR,2)=PL(CHAR,2)-10 : End If 
  771.     If PL(CHAR,4)=2 : PL(CHAR,2)=PL(CHAR,2)-8 : End If 
  772.     If PL(CHAR,4)=3 : PL(CHAR,2)=PL(CHAR,2)-6 : End If 
  773.     If PL(CHAR,4)=4 : PL(CHAR,2)=PL(CHAR,2)-2 : End If 
  774.     If PL(CHAR,4)=5 : PL(CHAR,2)=PL(CHAR,2)-1 : End If 
  775.     If PL(CHAR,4)=6 : PL(CHAR,2)=PL(CHAR,2)-0 : End If 
  776.     If PL(CHAR,4)=9 : PL(CHAR,5)=5 : End If 
  777.     If PL(CHAR,4)=7 : PL(CHAR,2)=PL(CHAR,2)+1 : End If 
  778.     If PL(CHAR,4)=8 : PL(CHAR,2)=PL(CHAR,2)+2 : End If 
  779.     If PL(CHAR,4)=9 : PL(CHAR,2)=PL(CHAR,2)+6 : End If 
  780.     If PL(CHAR,4)=10 : PL(CHAR,2)=PL(CHAR,2)+8 : End If 
  781.     If PL(CHAR,4)=11 : PL(CHAR,2)=PL(CHAR,2)+10 : End If 
  782.     If PL(CHAR,4)=12 : PL(CHAR,5)=7 : End If 
  783.     '
  784.     PL(CHAR,4)=PL(CHAR,4)+1
  785.     '
  786.     If PL(CHAR,4)>13 : PL(CHAR,4)=1 : PL(CHAR,3)=1 : End If 
  787.     '
  788.    End If 
  789.  End If 
  790.  '  
  791.  Rem super slicing head lob 
  792.  If PL(CHAR,3)=14
  793.    If PL(CHAR,4)<>0
  794.     If CHAR=M0DEX : DX1=25 : DX2=-25 : End If 
  795.     If CHAR=M0DE : DX1=-25 : DX2=25 : End If 
  796.     If PL(CHAR,4)=1 : PL(CHAR,5)=26 : End If 
  797.     If PL(CHAR,4)=6 : PL(CHAR,5)=27 : End If 
  798.     If PL(CHAR,4)=8 : PL(CHAR,5)=26 : End If 
  799.     If PL(CHAR,4)=10 : PL(CHAR,5)=27 : End If 
  800.     If PL(CHAR,4)=15 : PL(CHAR,5)=28 : PL(CHAR,1)=PL(CHAR,1)+DX1 : End If 
  801.     If PL(CHAR,4)=17 : PL(CHAR,5)=26 : PL(CHAR,1)=PL(CHAR,1)+DX2 : End If 
  802.     PL(CHAR,4)=PL(CHAR,4)+1
  803.     '
  804.     If PL(CHAR,4)>18 : PL(CHAR,4)=1 : PL(CHAR,3)=1 : End If 
  805.     '
  806.    End If 
  807.  End If 
  808.  '
  809.  Rem throw/give sword 
  810.  If PL(CHAR,3)=15
  811.    If PL(CHAR,4)<>0
  812.     If CHAR=M0DEX : DX1=25 : DX2=-25 : End If 
  813.     If CHAR=M0DE : DX1=-25 : DX2=25 : End If 
  814.     If PL(CHAR,4)=1 : PL(CHAR,5)=27 : End If 
  815.     If PL(CHAR,4)=2 : PL(CHAR,5)=26 : End If 
  816.     If PL(CHAR,4)=3
  817.        PL(CHAR,5)=28 : PL(CHAR,1)=PL(CHAR,1)+DX1
  818.        Gosub _GIVESWORD : Rem in other words, get rid of it
  819.     End If 
  820.     '
  821.     PL(CHAR,4)=PL(CHAR,4)+1
  822.     If PL(CHAR,4)>4 : PL(CHAR,5)=1 : PL(CHAR,1)=PL(CHAR,1)+DX2 : PL(CHAR,4)=1 : PL(CHAR,3)=1 : End If 
  823.     '
  824.    End If 
  825.  End If 
  826.  '
  827.  '
  828.  Rem win and put away swords
  829.  If PL(CHAR,3)=16
  830.    If PL(CHAR,4)<>0
  831.      If PL(CHAR,10)>0
  832.       If PL(CHAR,4)=1 : PL(CHAR,5)=21 : End If 
  833.       If PL(CHAR,4)=4 : PL(CHAR,5)=20 : End If 
  834.       If PL(CHAR,4)=11 : PL(CHAR,5)=19 : End If 
  835.      Else 
  836.       If PL(CHAR,4)=1 : PL(CHAR,5)=21 : End If 
  837.       If PL(CHAR,4)=3 : PL(CHAR,5)=19 : End If 
  838.       If PL(CHAR,4)=6 : PL(CHAR,5)=21 : End If 
  839.       If PL(CHAR,4)=8 : PL(CHAR,5)=19 : End If 
  840.       If PL(CHAR,4)=11 : PL(CHAR,5)=21 : End If 
  841.       If PL(CHAR,4)=13 : PL(CHAR,5)=19 : End If 
  842.       If PL(CHAR,4)=16 : PL(CHAR,5)=21 : End If 
  843.       If PL(CHAR,4)=18 : PL(CHAR,5)=19 : End If 
  844.      End If 
  845.     PL(CHAR,4)=PL(CHAR,4)+1
  846.     '
  847.     If PL(CHAR,4)>19
  848.        PL(CHAR,4)=1 : PL(CHAR,3)=0
  849.        PL(CHAR,10)=0 : PL(CHAR,18)=0 : PL(CHAR,19)=0
  850.     End If 
  851.     '
  852.    End If 
  853.  End If 
  854.  '
  855.  '
  856.  '
  857.  '
  858.  '
  859.  '
  860.  Rem reaction actions follow
  861.  '
  862.  Rem 50 = weakest reaction
  863.  If PL(CHAR,3)=50
  864.    If PL(CHAR,4)<>0
  865.     If CHAR=M0DEX : DX1=-5 : DX2=-3 : DX3=-1 : End If 
  866.     If CHAR=M0DE : DX1=5 : DX2=3 : DX3=1 : End If 
  867.     If PL(CHAR,4)=1 : PL(CHAR,5)=14 : PL(CHAR,1)=PL(CHAR,1)+DX1 : End If 
  868.     If PL(CHAR,4)=2 : PL(CHAR,5)=14 : PL(CHAR,1)=PL(CHAR,1)+DX2 : End If 
  869.     If PL(CHAR,4)=3 : PL(CHAR,5)=1 : PL(CHAR,1)=PL(CHAR,1)+DX3 : End If 
  870.     PL(CHAR,4)=PL(CHAR,4)+1
  871.     '
  872.     If PL(CHAR,4)>5 : PL(CHAR,4)=1 : PL(CHAR,3)=1 : End If 
  873.     '
  874.    End If 
  875.  End If 
  876.  '
  877.  Rem 51 = strong reaction 
  878.  If PL(CHAR,3)=51
  879.    If PL(CHAR,4)<>0
  880.     If CHAR=M0DEX : DX1=-10 : DX2=-5 : DX3=-3 : End If 
  881.     If CHAR=M0DE : DX1=10 : DX2=5 : DX3=3 : End If 
  882.     If PL(CHAR,4)=1
  883.        PL(CHAR,5)=14 : PL(CHAR,1)=PL(CHAR,1)+DX1
  884.        Rem drop sword(s)
  885.        Gosub _TAKEONESWORD
  886.     End If 
  887.     If PL(CHAR,4)=2 : PL(CHAR,5)=14 : PL(CHAR,1)=PL(CHAR,1)+DX2 : End If 
  888.     If PL(CHAR,4)=3 : PL(CHAR,5)=14 : PL(CHAR,1)=PL(CHAR,1)+DX3 : End If 
  889.     PL(CHAR,4)=PL(CHAR,4)+1
  890.     '
  891.     If PL(CHAR,4)>5 : PL(CHAR,4)=1 : PL(CHAR,3)=1 : End If 
  892.     '
  893.    End If 
  894.  End If 
  895.  '
  896.  Rem 52 = knock back reaction 
  897.  If PL(CHAR,3)=52
  898.    If PL(CHAR,4)<>0
  899.     If CHAR=M0DEX : DX1=-10 : DX2=-8 : DX3=-6 : DX4=-3 : DX5=-2 : DX6=-1 : End If 
  900.     If CHAR=M0DE : DX1=10 : DX2=8 : DX3=6 : DX4=3 : DX5=2 : DX6=1 : End If 
  901.     If PL(CHAR,4)=1
  902.        PL(CHAR,5)=14 : PL(CHAR,1)=PL(CHAR,1)-10
  903.        Gosub _TAKEALLSWORD
  904.     End If 
  905.     If PL(CHAR,4)=2 : PL(CHAR,5)=15 : PL(CHAR,1)=PL(CHAR,1)+DX1 : End If 
  906.     If PL(CHAR,4)=3 : PL(CHAR,5)=15 : PL(CHAR,1)=PL(CHAR,1)+DX2 : End If 
  907.     If PL(CHAR,4)=4 : PL(CHAR,5)=15 : PL(CHAR,1)=PL(CHAR,1)+DX3 : End If 
  908.     Rem at this point, may fall on spikes
  909.     '
  910.     If SPIKE1=1 and PL(CHAR,1)<50 : PL(CHAR,3)=55 : End If 
  911.     If SPIKE2=1 and PL(CHAR,1)>280 : PL(CHAR,3)=55 : End If 
  912.     '
  913.     If PL(CHAR,4)=5 : PL(CHAR,5)=16 : PL(CHAR,1)=PL(CHAR,1)+DX4 : End If 
  914.     If PL(CHAR,4)=6 : PL(CHAR,5)=16 : PL(CHAR,1)=PL(CHAR,1)+DX5 : End If 
  915.     If PL(CHAR,4)=7 : PL(CHAR,5)=16 : PL(CHAR,1)=PL(CHAR,1)+DX6 : End If 
  916.     PL(CHAR,4)=PL(CHAR,4)+1
  917.     '
  918.     If PL(CHAR,4)>8
  919.        PL(CHAR,4)=1 : PL(CHAR,3)=53
  920.        If PL(CHAR,20)=0
  921.           PL(CHAR,3)=99 : REWARD=CHARX
  922.        End If 
  923.     End If 
  924.     '
  925.    End If 
  926.  End If 
  927.  '
  928.  Rem 53 -restm then  get up 
  929.  If PL(CHAR,3)=53
  930.    If PL(CHAR,4)<>0
  931.     '
  932.     If PL(CHAR,4)=1
  933.        PL(CHAR,5)=16
  934.        Gosub _TAKEALLSWORD
  935.     End If 
  936.     If PL(CHAR,4)=10 : PL(CHAR,5)=7 : End If 
  937.     '
  938.     PL(CHAR,4)=PL(CHAR,4)+1
  939.     If PL(CHAR,4)>11 : PL(CHAR,4)=1 : PL(CHAR,3)=1 : End If 
  940.     '
  941.    End If 
  942.  End If 
  943.  '
  944.  Rem 54 - super death 
  945.  '
  946.  If PL(CHAR,3)=54
  947.    If PL(CHAR,4)<>0
  948.     '
  949.     If CHAR=M0DEX : DX1=-20 : DX2=-25 : DX3=-30 : DX4=-35 : DX5=-40 : DX6=-43 : DX7=-45 : DX8=-5 : End If 
  950.     If CHAR=M0DE : DX1=20 : DX2=25 : DX3=30 : DX4=35 : DX5=40 : DX6=43 : DX7=45 : DX8=5 : End If 
  951.     '
  952.     If PL(CHAR,4)=1
  953.        PL(CHAR,5)=29 : PL(CHAR,7)=PL(CHAR,1) : PL(CHAR,8)=PL(CHAR,2)-50
  954.        Gosub _TAKEALLSWORD
  955.     End If 
  956.     If PL(CHAR,4)=2 : PL(CHAR,9)=30 : PL(CHAR,7)=PL(CHAR,1)+DX1 : PL(CHAR,8)=PL(CHAR,2)-55 : End If 
  957.     If PL(CHAR,4)=3 : PL(CHAR,9)=30 : PL(CHAR,7)=PL(CHAR,1)+DX2 : PL(CHAR,8)=PL(CHAR,2)-56 : End If 
  958.     If PL(CHAR,4)=4 : PL(CHAR,9)=30 : PL(CHAR,7)=PL(CHAR,1)+DX3 : PL(CHAR,8)=PL(CHAR,2)-54 : End If 
  959.     If PL(CHAR,4)=5 : PL(CHAR,9)=30 : PL(CHAR,7)=PL(CHAR,1)+DX4 : PL(CHAR,8)=PL(CHAR,2)-49 : End If 
  960.     If PL(CHAR,4)=6 : PL(CHAR,9)=31 : PL(CHAR,7)=PL(CHAR,1)+DX5 : PL(CHAR,8)=PL(CHAR,2)-39 : End If 
  961.     If PL(CHAR,4)=7 : PL(CHAR,9)=31 : PL(CHAR,7)=PL(CHAR,1)+DX6 : PL(CHAR,8)=PL(CHAR,2)-25 : End If 
  962.     If PL(CHAR,4)=8 : PL(CHAR,9)=32 : PL(CHAR,7)=PL(CHAR,1)+DX7 : PL(CHAR,8)=PL(CHAR,2)-5 : End If 
  963.     If PL(CHAR,4)=9 : PL(CHAR,9)=33 : PL(CHAR,8)=PL(CHAR,2) : End If 
  964.     If PL(CHAR,4)=10 : PL(CHAR,9)=0 : End If 
  965.     '
  966.     If PL(CHAR,4)=22 : PL(CHAR,9)=33 : PL(CHAR,7)=PL(CHAR,1)+DX8 : PL(CHAR,8)=PL(CHAR,2)-50 : End If 
  967.     If PL(CHAR,4)=24 : PL(CHAR,9)=32 : End If 
  968.     If PL(CHAR,4)=26 : PL(CHAR,9)=30 : End If 
  969.     If PL(CHAR,4)=28 : PL(CHAR,9)=0 : PL(CHAR,5)=14 : End If 
  970.     '
  971.     PL(CHAR,4)=PL(CHAR,4)+1
  972.     If PL(CHAR,4)>30 or(PL(CHAR,4)>20 and PL(CHAR,20)<=0)
  973.        PL(CHAR,4)=1 : PL(CHAR,3)=10
  974.        If PL(CHAR,20)<=0
  975.           PL(CHAR,3)=99 : REWARD=CHARX
  976.        End If 
  977.     End If 
  978.     '
  979.    End If 
  980.  End If 
  981.  '
  982.  Rem 55 = knock back and spike death, the 999 for when it is pausing
  983.  If PL(CHAR,3)=55 and PL(CHAR,4)<999
  984.    If PL(CHAR,4)<>0
  985.     If CHAR=M0DEX : DX1=0 : DX2=0 : DX3=0 : DX4=0 : DX5=-2 : DX6=-3 : End If 
  986.     If CHAR=M0DE : DX1=0 : DX2=0 : DX3=0 : DX4=0 : DX5=2 : DX6=3 : End If 
  987.     If PL(CHAR,4)=1
  988.        PL(CHAR,5)=14 : PL(CHAR,1)=PL(CHAR,1)-10 : PL(CHAR,0)=0
  989.        Gosub _TAKEALLSWORD
  990.     End If 
  991.     If PL(CHAR,4)=2 : PL(CHAR,5)=15 : PL(CHAR,1)=PL(CHAR,1)+DX1 : End If 
  992.     If PL(CHAR,4)=3 : PL(CHAR,5)=15 : PL(CHAR,1)=PL(CHAR,1)+DX2 : End If 
  993.     If PL(CHAR,4)=4 : PL(CHAR,5)=15 : PL(CHAR,1)=PL(CHAR,1)+DX3 : End If 
  994.     If PL(CHAR,4)=5 : PL(CHAR,22)=32 : PL(CHAR,5)=15 : PL(CHAR,1)=PL(CHAR,1)+DX4 : PL(CHAR,2)=PL(CHAR,2)+3 : End If 
  995.     If PL(CHAR,4)=6 : PL(CHAR,22)=32 : PL(CHAR,5)=15 : PL(CHAR,1)=PL(CHAR,1)+DX5 : PL(CHAR,2)=PL(CHAR,2)+3 : End If 
  996.     If PL(CHAR,4)=7 : PL(CHAR,22)=32 : PL(CHAR,5)=15 : PL(CHAR,1)=PL(CHAR,1)+DX6 : PL(CHAR,2)=PL(CHAR,2)+3 : End If 
  997.     '
  998.     PL(CHAR,4)=PL(CHAR,4)+1
  999.     '
  1000.     If PL(CHAR,4)>20
  1001.        PL(CHAR,20)=-50
  1002.        REWARD=CHARX
  1003.        PL(CHAR,4)=999
  1004.     End If 
  1005.     '
  1006.    End If 
  1007.  End If 
  1008.  '
  1009.  Rem 56 = knock back and fall to ground from being in air 
  1010.  If PL(CHAR,3)=56
  1011.    If PL(CHAR,4)<>0
  1012.     If CHAR=M0DEX : DX1=-10 : DX2=-8 : DX3=-6 : DX4=-3 : DX5=-2 : DX6=-1 : End If 
  1013.     If CHAR=M0DE : DX1=10 : DX2=8 : DX3=6 : DX4=3 : DX5=2 : DX6=1 : End If 
  1014.     If PL(CHAR,4)=1
  1015.        PL(CHAR,5)=14 : PL(CHAR,1)=PL(CHAR,1)-10
  1016.        Gosub _TAKEALLSWORD
  1017.     End If 
  1018.     If PL(CHAR,4)=2 : PL(CHAR,5)=15 : PL(CHAR,1)=PL(CHAR,1)+DX1 : End If 
  1019.     If PL(CHAR,4)=3 : PL(CHAR,5)=15 : PL(CHAR,1)=PL(CHAR,1)+DX2 : End If 
  1020.     If PL(CHAR,4)=4 : PL(CHAR,5)=15 : PL(CHAR,1)=PL(CHAR,1)+DX3 : End If 
  1021.     Rem at this point, may fall on spikes
  1022.     '
  1023.     If SPIKE1=1 and PL(CHAR,1)<50 : PL(CHAR,3)=55 : End If 
  1024.     If SPIKE2=1 and PL(CHAR,1)>280 : PL(CHAR,3)=55 : End If 
  1025.     '
  1026.     If PL(CHAR,4)=5 : PL(CHAR,5)=16 : PL(CHAR,1)=PL(CHAR,1)+DX4 : End If 
  1027.     If PL(CHAR,4)=6 : PL(CHAR,5)=16 : PL(CHAR,1)=PL(CHAR,1)+DX5 : End If 
  1028.     If PL(CHAR,4)=7 : PL(CHAR,5)=16 : PL(CHAR,1)=PL(CHAR,1)+DX6 : End If 
  1029.     '
  1030.     If PL(CHAR,2)<FLOORY
  1031.        PL(CHAR,2)=PL(CHAR,2)+4
  1032.        If PL(CHAR,2)>=FLOORY
  1033.           PL(CHAR,2)=FLOORY
  1034.        End If 
  1035.     End If 
  1036.     '
  1037.     PL(CHAR,4)=PL(CHAR,4)+1
  1038.     '
  1039.     If PL(CHAR,4)>8
  1040.        PL(CHAR,4)=1 : PL(CHAR,3)=53
  1041.        If PL(CHAR,20)<=0
  1042.           PL(CHAR,3)=99 : REWARD=CHARX
  1043.        End If 
  1044.     End If 
  1045.     '
  1046.    End If 
  1047.  End If 
  1048.  '
  1049.  '
  1050.  '
  1051.  '
  1052. Return 
  1053. '
  1054. '
  1055. _TAKEALLSWORD:
  1056.  '
  1057.  If PL(CHAR,10)>0
  1058.    PL(CHAR,12)=PL(CHAR,1)+20 : PL(CHAR,13)=PL(CHAR,2)-40
  1059.    PL(CHAR,14)=34 : PL(CHAR,18)=1
  1060.  End If 
  1061.  If PL(CHAR,10)=2
  1062.    PL(CHAR,15)=PL(CHAR,1)-20 : PL(CHAR,16)=PL(CHAR,2)-40
  1063.    PL(CHAR,17)=34 : PL(CHAR,19)=1
  1064.  End If 
  1065.  PL(CHAR,10)=0
  1066.  '
  1067. Return 
  1068. '
  1069. _TAKEONESWORD:
  1070.  '
  1071.  If PL(CHAR,10)=2
  1072.    PL(CHAR,10)=1
  1073.    PL(CHAR,15)=PL(CHAR,1)+20 : PL(CHAR,16)=PL(CHAR,2)-40
  1074.    PL(CHAR,17)=34 : PL(CHAR,19)=1
  1075.  End If 
  1076.  '
  1077. Return 
  1078. '
  1079. _GIVESWORD:
  1080.  '
  1081.  If PL(CHAR,10)=2
  1082.    PL(CHAR,10)=1
  1083.    PL(CHAR,15)=PL(CHAR,1)+20 : PL(CHAR,16)=PL(CHAR,2)-40
  1084.    PL(CHAR,17)=36 : PL(CHAR,19)=100
  1085.  End If 
  1086.  '
  1087. Return 
  1088. '
  1089. _NEARINTERUPT:
  1090.  '
  1091.  Rem all ongoing stuff besides chappy 
  1092.  '
  1093.  For T=0 To 1
  1094.   If T<>0 : TT=T+2 : Else TT=0 : End If 
  1095.   Rem sword dropping 
  1096.   If PL(CHAR,18+T)>0 and PL(CHAR,18+T)<100
  1097.       If PL(CHAR,18+T)=1 : PL(CHAR,12+TT)=PL(CHAR,12+TT)+5-(T*15) : PL(CHAR,13+TT)=PL(CHAR,13+TT)-3 : End If 
  1098.       If PL(CHAR,18+T)=2 : PL(CHAR,12+TT)=PL(CHAR,12+TT)+5-(T*15) : PL(CHAR,13+TT)=PL(CHAR,13+TT)-1 : End If 
  1099.       If PL(CHAR,18+T)=3 : PL(CHAR,12+TT)=PL(CHAR,12+TT)+5-(T*15) : PL(CHAR,13+TT)=PL(CHAR,13+TT)+2 : End If 
  1100.       If PL(CHAR,18+T)=4 : PL(CHAR,12+TT)=PL(CHAR,12+TT)+5-(T*15) : PL(CHAR,13+TT)=PL(CHAR,13+TT)+5 : End If 
  1101.       If PL(CHAR,18+T)=5 : PL(CHAR,12+TT)=PL(CHAR,12+TT)+5-(T*15) : PL(CHAR,13+TT)=PL(CHAR,13+TT)+10 : End If 
  1102.       If PL(CHAR,18+T)>5 and PL(CHAR,13+TT)<>(FLOORY+((1-T)*3))
  1103.          PL(CHAR,13+TT)=PL(CHAR,13+TT)+15
  1104.          If PL(CHAR,13+TT)>(FLOORY+((1-T)*3)) : PL(CHAR,13+TT)=(FLOORY+((1-T)*3)) : End If 
  1105.       End If 
  1106.       If PL(CHAR,18+T)=6 : PL(CHAR,12+TT)=PL(CHAR,12+TT)+4-(T*12) : End If 
  1107.       If PL(CHAR,18+T)=7 : PL(CHAR,12+TT)=PL(CHAR,12+TT)+3-(T*10) : End If 
  1108.       If PL(CHAR,18+T)=8 : PL(CHAR,12+TT)=PL(CHAR,12+TT)+2-(T*6) : End If 
  1109.       If PL(CHAR,18+T)=9 : PL(CHAR,12+TT)=PL(CHAR,12+TT)+1-(T*2) : End If 
  1110.       '
  1111.       If PL(CHAR,14+TT)<38 : PL(CHAR,14+TT)=PL(CHAR,14+TT)+1 : End If 
  1112.       '
  1113.       PL(CHAR,18+T)=PL(CHAR,18+T)+1
  1114.       '
  1115.       If PL(CHAR,18+T)>10
  1116.          Gosub _PLACESWORD
  1117.       End If 
  1118.       '
  1119.   End If 
  1120.   If PL(CHAR,18+T)>=100 and CHAR=M0DEX
  1121.       If PL(CHAR,18+T)=101 : PL(CHAR,14+TT)=36 : PL(CHAR,12+TT)=PL(CHAR,12+TT)+20 : PL(CHAR,13+TT)=PL(CHAR,13+TT)-5 : End If 
  1122.       If PL(CHAR,18+T)=102 : PL(CHAR,12+TT)=PL(CHAR,12+TT)+20 : PL(CHAR,13+TT)=PL(CHAR,13+TT)-3 : End If 
  1123.       If PL(CHAR,18+T)=103 : PL(CHAR,12+TT)=PL(CHAR,12+TT)+15 : PL(CHAR,13+TT)=PL(CHAR,13+TT)-1 : End If 
  1124.       If PL(CHAR,18+T)=104 : PL(CHAR,14+TT)=37 : PL(CHAR,12+TT)=PL(CHAR,12+TT)+15 : PL(CHAR,13+TT)=PL(CHAR,13+TT)+2 : End If 
  1125.       If PL(CHAR,18+T)=105 : PL(CHAR,12+TT)=PL(CHAR,12+TT)+10 : PL(CHAR,13+TT)=PL(CHAR,13+TT)+5 : End If 
  1126.       If PL(CHAR,18+T)>105 and PL(CHAR,13+TT)<>(FLOORY+((1-T)*3))
  1127.          PL(CHAR,13+TT)=PL(CHAR,13+TT)+10
  1128.          If PL(CHAR,13+TT)>(FLOORY+((1-T)*3)) : PL(CHAR,13+TT)=(FLOORY+((1-T)*3)) : End If 
  1129.       End If 
  1130.       If PL(CHAR,18+T)=109 : PL(CHAR,14+TT)=38 : PL(CHAR,12+TT)=PL(CHAR,12+TT)+4 : End If 
  1131.       If PL(CHAR,18+T)=110 : PL(CHAR,12+TT)=PL(CHAR,12+TT) : End If 
  1132.       If PL(CHAR,18+T)=111 : PL(CHAR,12+TT)=PL(CHAR,12+TT) : End If 
  1133.       '
  1134.       PL(CHAR,18+T)=PL(CHAR,18+T)+1
  1135.       '
  1136.       If PL(CHAR,18+T)>113
  1137.          Gosub _PLACESWORD
  1138.       End If 
  1139.       '
  1140.   End If 
  1141.   If PL(CHAR,18+T)>=100 and CHAR=M0DE
  1142.       If PL(CHAR,18+T)=101 : PL(CHAR,14+TT)=36 : PL(CHAR,12+TT)=PL(CHAR,12+TT)-20 : PL(CHAR,13+TT)=PL(CHAR,13+TT)-5 : End If 
  1143.       If PL(CHAR,18+T)=102 : PL(CHAR,12+TT)=PL(CHAR,12+TT)-20 : PL(CHAR,13+TT)=PL(CHAR,13+TT)-3 : End If 
  1144.       If PL(CHAR,18+T)=103 : PL(CHAR,12+TT)=PL(CHAR,12+TT)-15 : PL(CHAR,13+TT)=PL(CHAR,13+TT)-1 : End If 
  1145.       If PL(CHAR,18+T)=104 : PL(CHAR,14+TT)=37 : PL(CHAR,12+TT)=PL(CHAR,12+TT)-15 : PL(CHAR,13+TT)=PL(CHAR,13+TT)+2 : End If 
  1146.       If PL(CHAR,18+T)=105 : PL(CHAR,12+TT)=PL(CHAR,12+TT)-10 : PL(CHAR,13+TT)=PL(CHAR,13+TT)+5 : End If 
  1147.       If PL(CHAR,18+T)>105 and PL(CHAR,13+TT)<>(FLOORY+((1-T)*3))
  1148.          PL(CHAR,13+TT)=PL(CHAR,13+TT)+10
  1149.          If PL(CHAR,13+TT)>(FLOORY+((1-T)*3)) : PL(CHAR,13+TT)=(FLOORY+((1-T)*3)) : End If 
  1150.       End If 
  1151.       If PL(CHAR,18+T)=109 : PL(CHAR,14+TT)=38 : PL(CHAR,12+TT)=PL(CHAR,12+TT)-4 : End If 
  1152.       If PL(CHAR,18+T)=110 : PL(CHAR,12+TT)=PL(CHAR,12+TT) : End If 
  1153.       If PL(CHAR,18+T)=111 : PL(CHAR,12+TT)=PL(CHAR,12+TT) : End If 
  1154.       '
  1155.       PL(CHAR,18+T)=PL(CHAR,18+T)+1
  1156.       '
  1157.       If PL(CHAR,18+T)>113
  1158.          Gosub _PLACESWORD
  1159.       End If 
  1160.       '
  1161.   End If 
  1162.  Next T
  1163.  '
  1164. Return 
  1165. '
  1166. '
  1167. _PLACESWORD:
  1168.  '
  1169.  PL(CHAR,18+T)=0
  1170.  S=1
  1171.  While S<=4 and SS(S,0)<>0
  1172.    S=S+1
  1173.  Wend 
  1174.  '
  1175.  If T=0 and CHAR=M0DEX : TTTTT=4 : End If 
  1176.  If T=1 and CHAR=M0DEX : TTTTT=1 : End If 
  1177.  If T=0 and CHAR=M0DE : TTTTT=9 : End If 
  1178.  If T=1 and CHAR=M0DE : TTTTT=6 : End If 
  1179.  '  
  1180.  SS(S,0)=TTTTT
  1181.  SS(S,1)=PL(CHAR,12+TT)
  1182.  SS(S,2)=PL(CHAR,13+TT)
  1183.  SS(S,3)=PL(CHAR,14+TT)
  1184.  If PL(CHAR,6)=8
  1185.    SS(S,4)=1
  1186.  Else 
  1187.    SS(S,4)=2
  1188.  End If 
  1189.  PL(CHAR,14+TT)=0 : Rem get rid of defenision
  1190.  '
  1191.  Bob Off SS(S,0)
  1192.  '
  1193. Return 
  1194. '
  1195. '
  1196. '
  1197. _DOBOBS:
  1198.  '
  1199.  BT=1+(CHAR-1)*5
  1200.  If CHAR=1 : DEFEXTRA=0 : End If 
  1201.  If CHIP=123
  1202.     If CHAR=2 : DEFEXTRA=40 : End If 
  1203.  Else 
  1204.     If CHAR=2 : DEFEXTRA=0 : End If 
  1205.  End If 
  1206.  '
  1207.  If PL(CHAR,6)=8
  1208.     '
  1209.     Bob BT+2,PL(CHAR,1),PL(CHAR,2),PL(CHAR,5)+DEFEXTRA : Rem body 
  1210.     '    
  1211.     If PL(CHAR,9)<>0
  1212.       Bob BT+1,PL(CHAR,7),PL(CHAR,8),PL(CHAR,9)+DEFEXTRA : Rem head 
  1213.     Else 
  1214.       Bob Off BT+1
  1215.     End If 
  1216.     '
  1217.     If PL(CHAR,10)=0
  1218.       If PL(CHAR,18)=0 : Bob Off BT+3 : End If 
  1219.       If PL(CHAR,19)=0 : Bob Off BT : End If 
  1220.     End If 
  1221.     If PL(CHAR,10)=1
  1222.       If SW(PL(CHAR,5),0)=1
  1223.         Bob BT+3,PL(CHAR,1)+SW(PL(CHAR,5),1)-25,PL(CHAR,2)+SW(PL(CHAR,5),2)-70,SW(PL(CHAR,5),3)+DEFEXTRA : Rem sword one
  1224.       End If 
  1225.       If SW(PL(CHAR,5),0)=2
  1226.         Bob BT+3,PL(CHAR,1)+SW(PL(CHAR,5),1)-25,PL(CHAR,2)+SW(PL(CHAR,5),2)-70,Hrev(SW(PL(CHAR,5),3)+DEFEXTRA) : Rem sword onereversed
  1227.       End If 
  1228.     End If 
  1229.     If PL(CHAR,10)=2
  1230.       If SW(PL(CHAR,5),0)=1
  1231.         Bob BT+3,PL(CHAR,1)+SW(PL(CHAR,5),1)-25,PL(CHAR,2)+SW(PL(CHAR,5),2)-70,SW(PL(CHAR,5),3)+DEFEXTRA : Rem sword one
  1232.         Bob BT,PL(CHAR,1)+SW(PL(CHAR,5),4)-25,PL(CHAR,2)+SW(PL(CHAR,5),5)-70,SW(PL(CHAR,5),6)+DEFEXTRA : Rem sword two
  1233.       End If 
  1234.       If SW(PL(CHAR,5),0)=2
  1235.         Bob BT+3,PL(CHAR,1)+SW(PL(CHAR,5),1)-25,PL(CHAR,2)+SW(PL(CHAR,5),2)-70,Hrev(SW(PL(CHAR,5),3)+DEFEXTRA) : Rem sword one rev
  1236.         Bob BT,PL(CHAR,1)+SW(PL(CHAR,5),4)-25,PL(CHAR,2)+SW(PL(CHAR,5),5)-70,Hrev(SW(PL(CHAR,5),6)+DEFEXTRA) : Rem sword tworev 
  1237.       End If 
  1238.     End If 
  1239.     If PL(CHAR,10)<2
  1240.        If PL(CHAR,18)=0 and PL(CHAR,19)=0
  1241.           Rem
  1242.        Else 
  1243.           If PL(CHAR,18)<>0
  1244.             Bob BT+3,PL(CHAR,12),PL(CHAR,13),PL(CHAR,14)+DEFEXTRA : Rem sword one
  1245.           End If 
  1246.           If PL(CHAR,19)<>0
  1247.             Bob BT,PL(CHAR,15),PL(CHAR,16),PL(CHAR,17)+DEFEXTRA : Rem sword two
  1248.           End If 
  1249.        End If 
  1250.     End If 
  1251.     '
  1252.     Rem spike bit
  1253.     If PL(CHAR,22)<>0
  1254.        Bob 10+CHAR,PL(CHAR,1)+5,PL(CHAR,2)-25,PL(CHAR,22)
  1255.     End If 
  1256.     '
  1257.  End If 
  1258.  If PL(CHAR,6)=4
  1259.     '
  1260.     Bob BT+2,PL(CHAR,1),PL(CHAR,2),Hrev(PL(CHAR,5)+DEFEXTRA) : Rem body 
  1261.     '    
  1262.     If PL(CHAR,9)<>0
  1263.       Bob BT+1,PL(CHAR,7),PL(CHAR,8),Hrev(PL(CHAR,9)+DEFEXTRA) : Rem head 
  1264.     Else 
  1265.       Bob Off BT+1
  1266.     End If 
  1267.     '
  1268.     If PL(CHAR,10)=0
  1269.       If PL(CHAR,18)=0 : Bob Off BT+3 : End If 
  1270.       If PL(CHAR,19)=0 : Bob Off BT : End If 
  1271.     End If 
  1272.     If PL(CHAR,10)=1
  1273.       If SW(PL(CHAR,5),0)=1
  1274.         Bob BT+3,PL(CHAR,1)+(75-SW(PL(CHAR,5),1))-50,PL(CHAR,2)+SW(PL(CHAR,5),2)-70,Hrev(SW(PL(CHAR,5),3)+DEFEXTRA) : Rem sword one
  1275.       End If 
  1276.       If SW(PL(CHAR,5),0)=2
  1277.         Bob BT+3,PL(CHAR,1)+(75-SW(PL(CHAR,5),1))-50,PL(CHAR,2)+SW(PL(CHAR,5),2)-70,SW(PL(CHAR,5),3)+DEFEXTRA : Rem sword onereversed
  1278.       End If 
  1279.     End If 
  1280.     If PL(CHAR,10)=2
  1281.       If SW(PL(CHAR,5),0)=1
  1282.         Bob BT+3,PL(CHAR,1)+(75-SW(PL(CHAR,5),1))-50,PL(CHAR,2)+SW(PL(CHAR,5),2)-70,Hrev(SW(PL(CHAR,5),3)+DEFEXTRA) : Rem sword one
  1283.         Bob BT,PL(CHAR,1)+(75-SW(PL(CHAR,5),4))-50,PL(CHAR,2)+SW(PL(CHAR,5),5)-70,Hrev(SW(PL(CHAR,5),6)+DEFEXTRA) : Rem sword two
  1284.       End If 
  1285.       If SW(PL(CHAR,5),0)=2
  1286.         Bob BT+3,PL(CHAR,1)+(75-SW(PL(CHAR,5),1))-50,PL(CHAR,2)+SW(PL(CHAR,5),2)-70,SW(PL(CHAR,5),3)+DEFEXTRA : Rem sword one rev
  1287.         Bob BT,PL(CHAR,1)+(75-SW(PL(CHAR,5),4))-50,PL(CHAR,2)+SW(PL(CHAR,5),5)-70,SW(PL(CHAR,5),6)+DEFEXTRA : Rem sword tworev 
  1288.       End If 
  1289.     End If 
  1290.     If PL(CHAR,10)<2
  1291.        If PL(CHAR,18)=0 and PL(CHAR,19)=0
  1292.           Rem
  1293.        Else 
  1294.           If PL(CHAR,18)<>0
  1295.             Bob BT+3,PL(CHAR,12),PL(CHAR,13),Hrev(PL(CHAR,14)+DEFEXTRA) : Rem sword one
  1296.           End If 
  1297.           If PL(CHAR,19)<>0
  1298.             Bob BT,PL(CHAR,15),PL(CHAR,16),Hrev(PL(CHAR,17)+DEFEXTRA) : Rem sword two
  1299.           End If 
  1300.        End If 
  1301.     End If 
  1302.     '
  1303.     Rem spike bit
  1304.     If PL(CHAR,22)<>0
  1305.        Bob 10+CHAR,PL(CHAR,1)+5,PL(CHAR,2)-25,Hrev(PL(CHAR,22))
  1306.     End If 
  1307.     '
  1308.  End If 
  1309.  '
  1310.  For T=1 To 4
  1311.    If SS(T,0)>0 and SS(T,4)=1
  1312.       Bob 12+T,SS(T,1),SS(T,2),SS(T,3)+DEFEXTRA
  1313.    End If 
  1314.    If SS(T,0)>0 and SS(T,4)<>1
  1315.       Bob 12+T,SS(T,1),SS(T,2),Hrev(SS(T,3)+DEFEXTRA)
  1316.    End If 
  1317.  Next T
  1318.  '
  1319. Return 
  1320. '
  1321. '
  1322. '
  1323. _READJOYSTICK:
  1324.  '
  1325.  DR=0 : J0Y=0
  1326.  '
  1327.  Rem j0y = 1 me 0 - other -999 enemy
  1328.  If CHAR=1
  1329.     J0Y=1
  1330.  End If 
  1331.  If CHAR=2 and CONTROL=1
  1332.     J0Y=0
  1333.  End If 
  1334.  If CHAR=2 and CONTROL=2
  1335.     J0Y=999
  1336.  End If 
  1337.  '
  1338.  Rem player has control inside screen 
  1339.     If CHAR=M0DEX
  1340.      If PL(CHAR,1)<20
  1341.        Rem if jump out
  1342.        If J0Y<=1
  1343.          If Joy(J0Y)=9 : DR=9 : Else DR=8 : End If 
  1344.        Else 
  1345.          DR=8
  1346.        End If 
  1347.        If DR=8 and PL(CHAR,1)>14 : DR=9 : End If 
  1348.        If PL(CHARX,1)<30 : PL(CHARX,1)=PL(CHARX,1)+5 : End If 
  1349.      Else 
  1350.        If J0Y<=1 : DR=Joy(J0Y) : Else Gosub _ENEMYACTION : End If 
  1351.      End If 
  1352.     End If 
  1353.     If CHAR=M0DE
  1354.      If PL(CHAR,1)>300
  1355.        If J0Y<=1
  1356.          If Joy(J0Y)=5 : DR=5 : Else DR=4 : End If 
  1357.        Else 
  1358.          DR=4
  1359.        End If 
  1360.        If DR=4 and PL(CHAR,1)<306 : DR=5 : End If 
  1361.        If PL(CHARX,1)>290 : PL(CHARX,1)=PL(CHARX,1)-5 : End If 
  1362.      Else 
  1363.        If J0Y<=1 : DR=Joy(J0Y) : Else Gosub _ENEMYACTION : End If 
  1364.      End If 
  1365.     End If 
  1366.  '
  1367.  Rem reverse any character two drs(horixontally only) 
  1368.  '
  1369.  If CHAR=M0DE
  1370.     '
  1371.     XDR=DR
  1372.     '
  1373.     If DR=4 : XDR=8 : End If 
  1374.     If DR=5 : XDR=9 : End If 
  1375.     If DR=6 : XDR=10 : End If 
  1376.     If DR=20 : XDR=24 : End If 
  1377.     If DR=21 : XDR=25 : End If 
  1378.     If DR=22 : XDR=26 : End If 
  1379.     '
  1380.     If DR=8 : XDR=4 : End If 
  1381.     If DR=9 : XDR=5 : End If 
  1382.     If DR=10 : XDR=6 : End If 
  1383.     If DR=24 : XDR=20 : End If 
  1384.     If DR=25 : XDR=21 : End If 
  1385.     If DR=26 : XDR=22 : End If 
  1386.     '
  1387.     DR=XDR
  1388.     '
  1389.  End If 
  1390.  '
  1391. Return 
  1392. '
  1393. '
  1394. '
  1395. '
  1396. '
  1397. '
  1398. '
  1399. '
  1400. '
  1401. _CHOOSE:
  1402.  '
  1403.  Load Iff FLNG$+"Battle-prefs.iff",0 : Screen Hide 0
  1404.  Screen 0
  1405.  '
  1406.  Colour 7,$FFF : Colour 6,$0
  1407.  CONTROL=1
  1408.  '
  1409.  Screen Show 0
  1410.  While Joy(1)<15
  1411.   '
  1412.   If CONTROL=1 and Joy(1)=4 : CONTROL=2 : End If 
  1413.   If CONTROL=2 and Joy(1)=8 : CONTROL=1 : End If 
  1414.   '
  1415.   If CONTROL=1 : Colour 7,$FFF : Colour 6,$0 : End If 
  1416.   If CONTROL=2 : Colour 7,$0 : Colour 6,$FFF : End If 
  1417.   '
  1418.   Wait 5
  1419.   '
  1420.  Wend 
  1421.  '
  1422. Return 
  1423. '
  1424. _SETTUPPLAYERS:
  1425.  '
  1426.  For T=1 To 2
  1427.   PL(T,0)=1 : PL(T,2)=170 : PL(T,3)=1
  1428.   PL(T,4)=1 : PL(T,5)=1
  1429.   PL(T,7)=0 : PL(T,8)=0 : PL(T,9)=0 : Rem head co-ords 
  1430.   PL(T,20)=50 : Rem hit points 
  1431.   PL(T,22)=0
  1432.  Next T
  1433.  '
  1434.  Rem the dod on left
  1435.  PL(1,1)=-20 : PL(1,6)=8 : PL(1,10)=2
  1436.  '
  1437.  Rem the right
  1438.  PL(2,1)=340 : PL(2,6)=4 : PL(2,10)=2
  1439.  '
  1440.  Rem clear ground swords
  1441.  For T=1 To 4
  1442.   SS(T,0)=0
  1443.  Next T
  1444.  '
  1445. Return 
  1446. '
  1447. '
  1448. '
  1449. _SETTUPSCREEN:
  1450.  '
  1451.  Screen Open 1,320,256,16,Lowres
  1452.  Load Iff FLNG$+"battle-arena.iff",1 : Screen Hide 1
  1453.  Colour 6,$A
  1454.  Screen Display 1,,,320,190
  1455.  '
  1456.  Screen 1 : Double Buffer : Autoback OFF : Bob Update Off 
  1457.  Get Palette 1
  1458.  '
  1459.  For T=1 To 20
  1460.   Set Bob T,0,%111111,%11001010
  1461.  Next T
  1462.  '
  1463. Return 
  1464. '
  1465. _RENEWSCREEN:
  1466.  '
  1467.  Gosub _MAKESCORE
  1468.  '
  1469.  Rem decorate doors with masking bob so can go in as normal!!!
  1470.  '  
  1471.  Screen Close 1 : Screen Open 1,320,256,16,Lowres : Flash Off : Curs Off 
  1472.  Load Iff FLNG$+"battle-arena.iff",1 : Screen Hide 1
  1473.  Screen Display 1,,,320,190
  1474.  Paste Bob 10,10,80 : Paste Bob 290,10,81
  1475.  '
  1476.  Screen 1 : Double Buffer : Autoback OFF : Bob Update Off 
  1477.  '
  1478.  For T=1 To 20
  1479.   Set Bob T,0,%111111,%11001010
  1480.  Next T
  1481.  '
  1482.  Bob 17,8,175,39 : Bob 18,313,175,Hrev(39)
  1483.  '
  1484.  Fade 1 : Wait 15
  1485.  Screen Show 1
  1486.  '
  1487. Return 
  1488. '
  1489. '
  1490. '
  1491. _GRABGRAFIX:
  1492.  '
  1493.  Screen Open 1,320,256,16,Lowres : Screen 1 : Screen Hide 1
  1494.  '
  1495.  M=0
  1496.  FLN1$="Battle-Mon.iff"
  1497.  FLN2$="Battle-Mon2.iff"
  1498.  Gosub _PARTIALGRABPART
  1499.  '
  1500.  If CHIP=123
  1501.    M=40
  1502.    FLN1$="Battle-Rak.iff"
  1503.    FLN2$="Battle-Rak2.iff"
  1504.    Gosub _PARTIALGRABPART
  1505.  End If 
  1506.  '
  1507.  '
  1508.  Rem need to grab peice of entrance for smooth enyrance 
  1509.  '
  1510.  Load Iff FLNG$+"battle-arena.iff",1 : Screen Hide 1
  1511.  '
  1512.  Get Bob 39,0,70 To 12,175
  1513.  '
  1514.  Rem hot spot the lot 
  1515.  '
  1516.  For T=1 To 39
  1517.   Hot Spot T,$12
  1518.  Next T
  1519.  For T=41 To 78
  1520.   Hot Spot T,$12
  1521.  Next T
  1522.  '
  1523.  '
  1524. Return 
  1525. '
  1526. '
  1527. _PARTIALGRABPART:
  1528.  '
  1529.  Load Iff FLNG$+FLN1$,1 : Screen Hide 1
  1530.  '
  1531.  Rem grab walks jump and push 
  1532.  ST=1+M : SX=48 : SY=68 : Y=0
  1533.  For X=0 To 5
  1534.    XX=X*2
  1535.    Get Bob ST+X,1+(XX*25),1+(Y*70) To 1+(XX*25)+SX,1+(Y*70)+SY
  1536.  Next X
  1537.  '
  1538.  Rem low punch
  1539.  ST=7+M : SX=48 : SY=68 : X=0 : Y=1
  1540.  Get Bob ST,1+(X*25),1+(Y*70) To 1+(X*25)+SX,1+(Y*70)+SY
  1541.  ST=8+M : SX=73 : SY=68 : X=2 : Y=1
  1542.  Get Bob ST,1+(X*25),1+(Y*70) To 1+(X*25)+SX,1+(Y*70)+SY
  1543.  '
  1544.  Rem kicks and thums up 
  1545.  ST=9+M : SX=48 : SY=68 : Y=1
  1546.  For X=0 To 0
  1547.    XX=(X*2)+5
  1548.    Get Bob ST+X,1+(XX*25),1+(Y*70) To 1+(XX*25)+SX,1+(Y*70)+SY
  1549.  Next X
  1550.  ST=9+M : SX=73 : SY=68 : X=7 : Y=1
  1551.  Get Bob ST+1,1+(X*25),1+(Y*70) To 1+(X*25)+SX,1+(Y*70)+SY
  1552.  ST=9+M : SX=48 : SY=68 : Y=1
  1553.  For X=2 To 2
  1554.    XX=(X*2)+6
  1555.    Get Bob ST+X,1+(XX*25),1+(Y*70) To 1+(XX*25)+SX,1+(Y*70)+SY
  1556.  Next X
  1557.  '
  1558.  Rem high swing and hurt  
  1559.  ST=12+M : SX=48 : SY=68 : Y=2
  1560.  For X=0 To 2
  1561.    XX=(X*2)
  1562.    Get Bob ST+X,1+(XX*25),1+(Y*70) To 1+(XX*25)+SX,1+(Y*70)+SY
  1563.  Next X
  1564.  '
  1565.  Rem fall and grounded
  1566.  ST=15+M : SX=73 : SY=68 : X=6 : Y=2
  1567.  Get Bob ST,1+(X*25),1+(Y*70) To 1+(X*25)+SX,1+(Y*70)+SY
  1568.  ST=16+M : SX=73 : SY=68 : X=9 : Y=2
  1569.  Get Bob ST,1+(X*25),1+(Y*70) To 1+(X*25)+SX,1+(Y*70)+SY
  1570.  '
  1571.  Rem small and large shadow 
  1572.  ST=17+M : SX=48 : SY=18 : X=0 : Y=3
  1573.  Get Bob ST,1+(X*25),1+(Y*70) To 1+(X*25)+SX,1+(Y*70)+SY
  1574.  ST=18+M : SX=73 : SY=18 : X=2 : Y=3
  1575.  Get Bob ST,1+(X*25),1+(Y*70) To 1+(X*25)+SX,1+(Y*70)+SY
  1576.  '
  1577.  '
  1578.  Rem a new screen of data 
  1579.  '
  1580.  Load Iff FLNG$+FLN2$,1 : Screen Hide 1
  1581.  Gosub _TAKECOLOURS
  1582.  '
  1583.  Rem draw swords, pary and block high   
  1584.  ST=19+M : SX=48 : SY=68 : Y=0
  1585.  For X=0 To 5
  1586.    XX=(X*2)
  1587.    Get Bob ST+X,1+(XX*25),1+(Y*70) To 1+(XX*25)+SX,1+(Y*70)+SY
  1588.  Next X
  1589.  '
  1590.  Rem block low, first to frames for big death swing   
  1591.  ST=25+M : SX=48 : SY=68 : Y=1
  1592.  For X=0 To 2
  1593.    XX=(X*2)
  1594.    Get Bob ST+X,1+(XX*25),1+(Y*70) To 1+(XX*25)+SX,1+(Y*70)+SY
  1595.  Next X
  1596.  '
  1597.  Rem final death swing anim and no-head frame 
  1598.  ST=28+M : SX=73 : SY=68 : X=6 : Y=1
  1599.  Get Bob ST,1+(X*25),1+(Y*70) To 1+(X*25)+SX,1+(Y*70)+SY
  1600.  ST=29+M : SX=73 : SY=68 : X=9 : Y=1
  1601.  Get Bob ST,1+(X*25),1+(Y*70) To 1+(X*25)+SX,1+(Y*70)+SY
  1602.  '
  1603.  '
  1604.  Rem misclanious items, closely related to players
  1605.  '
  1606.  Rem four heads (two intact, two ex[losding)
  1607.  '
  1608.  Rem block low, first to frames for big death swing   
  1609.  ST=30+M : SX=23 : SY=23 : Y=2
  1610.  For X=0 To 1
  1611.    XX=X
  1612.    Get Bob ST+X,1+(XX*25),1+(Y*70) To 1+(XX*25)+SX,1+(Y*70)+SY
  1613.  Next X
  1614.  For X=0 To 1
  1615.    XX=X
  1616.    Get Bob ST+X+2,1+(XX*25),1+(Y*70)+25 To 1+(XX*25)+SX,1+(Y*70)+SY+25
  1617.  Next X
  1618.  '
  1619.  Rem 5 sword anims  
  1620.  ST=34+M : SX=48 : SY=48 : Y=2
  1621.  For X=0 To 4
  1622.    XX=(X*2)+2
  1623.    Get Bob ST+X,1+(XX*25),1+(Y*70) To 1+(XX*25)+SX,1+(Y*70)+SY
  1624.  Next X
  1625.  '
  1626. Return 
  1627. '
  1628. '
  1629. _PREPARESWORDARRAY:
  1630.  '
  1631.  Rem code 0 = 1-normal  2-reversed  0- not there  
  1632.  '
  1633.  SW(1,0)=1
  1634.  SW(1,1)=32 : SW(1,2)=47 : SW(1,3)=35
  1635.  SW(1,4)=44 : SW(1,5)=39 : SW(1,6)=34
  1636.  '
  1637.  SW(2,0)=1
  1638.  SW(2,1)=37 : SW(2,2)=43 : SW(2,3)=34
  1639.  SW(2,4)=32 : SW(2,5)=43 : SW(2,6)=35
  1640.  '
  1641.  SW(3,0)=1
  1642.  SW(3,1)=47 : SW(3,2)=43 : SW(3,3)=35
  1643.  SW(3,4)=25 : SW(3,5)=50 : SW(3,6)=34
  1644.  '
  1645.  SW(4,0)=1
  1646.  SW(4,1)=18 : SW(4,2)=54 : SW(4,3)=37
  1647.  SW(4,4)=38 : SW(4,5)=34 : SW(4,6)=34
  1648.  '
  1649.  SW(5,0)=1
  1650.  SW(5,1)=18 : SW(5,2)=58 : SW(5,3)=37
  1651.  SW(5,4)=37 : SW(5,5)=62 : SW(5,6)=38
  1652.  '
  1653.  Rem 6 not used 
  1654.  '
  1655.  SW(7,0)=1
  1656.  SW(7,1)=29 : SW(7,2)=56 : SW(7,3)=36
  1657.  SW(7,4)=40 : SW(7,5)=45 : SW(7,6)=34
  1658.  '
  1659.  SW(8,0)=1
  1660.  SW(8,1)=72 : SW(8,2)=52 : SW(8,3)=36
  1661.  SW(8,4)=16 : SW(8,5)=51 : SW(8,6)=35
  1662.  '
  1663.  Rem 9 and 10 and 11 not used 
  1664.  '
  1665.  SW(12,0)=1
  1666.  SW(12,1)=32 : SW(12,2)=40 : SW(12,3)=36
  1667.  SW(12,4)=47 : SW(12,5)=68 : SW(12,6)=37
  1668.  '
  1669.  SW(13,0)=1
  1670.  SW(13,1)=66 : SW(13,2)=30 : SW(13,3)=36
  1671.  SW(13,4)=17 : SW(13,5)=68 : SW(13,6)=37
  1672.  '
  1673.  SW(14,0)=1
  1674.  SW(14,1)=19 : SW(14,2)=62 : SW(14,3)=37
  1675.  SW(14,4)=64 : SW(14,5)=31 : SW(14,6)=36
  1676.  '
  1677.  Rem 15,16,17,18 not used   
  1678.  '
  1679.  SW(19,0)=1
  1680.  SW(19,4)=0 : SW(19,5)=0 : SW(19,6)=0
  1681.  SW(19,1)=0 : SW(19,2)=0 : SW(19,3)=0
  1682.  '
  1683.  SW(20,0)=2
  1684.  SW(20,4)=0 : SW(20,5)=0 : SW(20,6)=0
  1685.  SW(20,1)=25 : SW(20,2)=22 : SW(20,3)=36
  1686.  '
  1687.  SW(21,0)=1
  1688.  SW(21,1)=46 : SW(21,2)=38 : SW(21,3)=34
  1689.  SW(21,4)=42 : SW(21,5)=35 : SW(21,6)=34
  1690.  '
  1691.  SW(22,0)=1
  1692.  SW(22,1)=59 : SW(22,2)=36 : SW(22,3)=35
  1693.  SW(22,4)=36 : SW(22,5)=48 : SW(22,6)=36
  1694.  '
  1695.  SW(23,0)=1
  1696.  SW(23,1)=65 : SW(23,2)=45 : SW(23,3)=36
  1697.  SW(23,4)=37 : SW(23,5)=49 : SW(23,6)=36
  1698.  '
  1699.  SW(24,0)=1
  1700.  SW(24,1)=42 : SW(24,2)=44 : SW(24,3)=35
  1701.  SW(24,4)=44 : SW(24,5)=38 : SW(24,6)=34
  1702.  '
  1703.  SW(25,0)=1
  1704.  SW(25,1)=42 : SW(25,2)=69 : SW(25,3)=37
  1705.  SW(25,4)=39 : SW(25,5)=64 : SW(25,6)=38
  1706.  '
  1707.  SW(26,0)=2
  1708.  SW(26,1)=1 : SW(26,2)=35 : SW(26,3)=36
  1709.  SW(26,4)=1 : SW(26,5)=35 : SW(26,6)=36
  1710.  '
  1711.  SW(27,0)=2
  1712.  SW(27,1)=-12 : SW(27,2)=34 : SW(27,3)=36
  1713.  SW(27,4)=-12 : SW(27,5)=34 : SW(27,6)=36
  1714.  '
  1715.  SW(28,0)=1
  1716.  SW(28,1)=62 : SW(28,2)=29 : SW(28,3)=36
  1717.  SW(28,4)=62 : SW(28,5)=29 : SW(28,6)=36
  1718.  '
  1719.  SW(29,0)=1
  1720.  SW(29,1)=10 : SW(29,2)=72 : SW(29,3)=36
  1721.  SW(29,4)=76 : SW(29,5)=33 : SW(29,6)=36
  1722.  '
  1723. Return 
  1724. '
  1725. '
  1726. '
  1727. '
  1728. _HITPOINTUPDATE:
  1729.  '
  1730.  If HPUP>0
  1731.   If HPUPDATE=1
  1732.      If PL(1,20)>=0 : Ink 10 : Bar 43+(PL(1,20)*2),1 To 44+(50*2),15 : End If 
  1733.   Else 
  1734.      If PL(2,20)>=0 : Ink 10 : Bar 179+(PL(2,20)*2),1 To 180+(50*2),15 : End If 
  1735.   End If 
  1736.   HPUP=HPUP-1 : If HPUP=0 : HPUPDATE=0 : End If 
  1737.  End If 
  1738.  '
  1739. Return 
  1740. '
  1741. '
  1742. '
  1743. '
  1744. '
  1745. _TITLEPAGE:
  1746.  '
  1747.  AA=987 : Gosub _MEDMAGIC
  1748.  '
  1749.  Screen Hide 1
  1750.  Screen 0 : Flash Off : Curs Off : Cls 0
  1751.  Load Iff FLNG$+"battle-title.iff",0 : Screen Hide 0 : C(6)=Colour(6) : C(7)=Colour(7)
  1752.  Fade 1 : Wait 15
  1753.  Screen Show 0
  1754.  Gosub _GIVECOLOURS
  1755.  '
  1756.  While Joy(1)<15 and Joy(0)<15
  1757.   '
  1758.   K$=Inkey$
  1759.   AA=1 : Gosub _MEDMAGIC
  1760.   '
  1761.  Wend 
  1762.  '
  1763.  Fade 2 : Wait 30
  1764.  Screen Hide 0 : Cls 0
  1765.  '
  1766. Return 
  1767. '
  1768. _TAKECOLOURS:
  1769.  '
  1770.  For T=0 To 15
  1771.   C(T)=Colour(T)
  1772.  Next T
  1773.  Fade 3
  1774.  Wait 45
  1775.  '
  1776. Return 
  1777. '
  1778. _GIVECOLOURS:
  1779.  '
  1780.  Fade 3,C(0),C(1),C(2),C(3),C(4),C(5),C(6),C(7),C(8),C(9),C(10),C(11),C(12),C(13),C(14),C(15)
  1781.  Wait 45
  1782.  '
  1783. Return 
  1784. '
  1785. _MAKESCORE:
  1786.  '
  1787.  Screen 0
  1788.  '
  1789.  If PL(1,21)<=9
  1790.   Ink 0 : Bar 0,0 To 20,20
  1791.   Ink 1
  1792.   For T=0 To 6
  1793.     If NO(PL(1,21),T)=1
  1794.      Bar NM(T,0),NM(T,1) To NM(T,2)+2,NM(T,3)+2
  1795.     End If 
  1796.   Next T
  1797.   Get Bob 80,1,1 To 20,20
  1798.  End If 
  1799.  If PL(2,21)<=9
  1800.   Ink 0 : Bar 0,0 To 20,20
  1801.   Ink 1
  1802.   For T=0 To 6
  1803.     If NO(PL(2,21),T)=1
  1804.      Bar NM(T,0),NM(T,1) To NM(T,2)+2,NM(T,3)+2
  1805.     End If 
  1806.   Next T
  1807.   Get Bob 81,1,1 To 20,20
  1808.  End If 
  1809.  '  
  1810.  Cls 0
  1811.  '
  1812. Return 
  1813. '
  1814. _CONFIGURENUMBER:
  1815.  '
  1816.  NM(0,0)=5 : NM(0,1)=5 : NM(0,2)=15 : NM(0,3)=5
  1817.  NM(1,0)=5 : NM(1,1)=5 : NM(1,2)=5 : NM(1,3)=10
  1818.  NM(2,0)=15 : NM(2,1)=5 : NM(2,2)=15 : NM(2,3)=10
  1819.  NM(3,0)=5 : NM(3,1)=10 : NM(3,2)=15 : NM(3,3)=10
  1820.  NM(4,0)=5 : NM(4,1)=10 : NM(4,2)=5 : NM(4,3)=15
  1821.  NM(5,0)=15 : NM(5,1)=10 : NM(5,2)=15 : NM(5,3)=15
  1822.  NM(6,0)=5 : NM(6,1)=15 : NM(6,2)=15 : NM(6,3)=15
  1823.  '
  1824.  '
  1825.  NO(0,0)=1 : NO(0,1)=1 : NO(0,2)=1
  1826.  NO(0,3)=0 : NO(0,4)=1 : NO(0,5)=1 : NO(0,6)=1
  1827.  '
  1828.  NO(1,0)=0 : NO(1,1)=0 : NO(1,2)=1
  1829.  NO(1,3)=0 : NO(1,4)=0 : NO(1,5)=1 : NO(1,6)=0
  1830.  '
  1831.  NO(2,0)=1 : NO(2,1)=0 : NO(2,2)=1
  1832.  NO(2,3)=1 : NO(2,4)=1 : NO(2,5)=0 : NO(2,6)=1
  1833.  '
  1834.  NO(3,0)=1 : NO(3,1)=0 : NO(3,2)=1
  1835.  NO(3,3)=1 : NO(3,4)=0 : NO(3,5)=1 : NO(3,6)=1
  1836.  '
  1837.  NO(4,0)=0 : NO(4,1)=1 : NO(4,2)=1
  1838.  NO(4,3)=1 : NO(4,4)=0 : NO(4,5)=1 : NO(4,6)=0
  1839.  '
  1840.  NO(5,0)=1 : NO(5,1)=1 : NO(5,2)=0
  1841.  NO(5,3)=1 : NO(5,4)=0 : NO(5,5)=1 : NO(5,6)=1
  1842.  '
  1843.  NO(6,0)=0 : NO(6,1)=1 : NO(6,2)=0
  1844.  NO(6,3)=1 : NO(6,4)=1 : NO(6,5)=1 : NO(6,6)=1
  1845.  '
  1846.  NO(7,0)=1 : NO(7,1)=0 : NO(7,2)=1
  1847.  NO(7,3)=0 : NO(7,4)=0 : NO(7,5)=1 : NO(7,6)=0
  1848.  '
  1849.  NO(8,0)=1 : NO(8,1)=1 : NO(8,2)=1
  1850.  NO(8,3)=1 : NO(8,4)=1 : NO(8,5)=1 : NO(8,6)=1
  1851.  '
  1852.  NO(9,0)=1 : NO(9,1)=1 : NO(9,2)=1
  1853.  NO(9,3)=1 : NO(9,4)=0 : NO(9,5)=1 : NO(9,6)=0
  1854.  '
  1855. Return 
  1856. '
  1857. '
  1858. '
  1859. _TAKECLIP:
  1860.  '
  1861.  Rem needs cl0p as number 1, 2-4, 5 
  1862.  '
  1863.  X=1 : Y=194
  1864.  '
  1865.  XX=X+((CL0P-1)*50)
  1866.  SY=53
  1867.  '
  1868.  Get Bob 80,XX,Y To XX+SX,Y+SY
  1869.  '
  1870. Return 
  1871. '
  1872. _CYCLECLIP:
  1873.  '
  1874.  If CL0P=1
  1875.     SX=48 : Gosub _TAKECLIP
  1876.     Paste Bob 182,73,80
  1877.     CL0P=0
  1878.  End If 
  1879.  If CL0P>=2 and CL0P<=4
  1880.     Rem spikes 
  1881.     SX=48 : Gosub _TAKECLIP
  1882.     If CL0PR=1
  1883.       Paste Bob 0,124,80
  1884.     Else 
  1885.       Paste Bob 273,124,Hrev(80)
  1886.     End If 
  1887.     CL0PBIT=CL0PBIT+1
  1888.     If CL0PBIT>4
  1889.       CL0PBIT=0
  1890.       CL0P=CL0P+1
  1891.     End If 
  1892.     If CL0P>4
  1893.        CL0P=0
  1894.        If CL0PR=1 : SPIKE1=1 : End If 
  1895.        If CL0PR=2 : SPIKE2=1 : End If 
  1896.     End If 
  1897.  End If 
  1898.  If CL0P>=202 and CL0P<=205
  1899.     ACL=CL0P
  1900.     If CL0P=202
  1901.        If CL0PR=1 : SPIKE1=0 : End If 
  1902.        If CL0PR=2 : SPIKE2=0 : End If 
  1903.     End If 
  1904.     If CL0P>=202 and CL0P<=204
  1905.      Rem spikes 
  1906.      CL0P=6-(CL0P-200)
  1907.      SX=48 : Gosub _TAKECLIP
  1908.     End If 
  1909.     If CL0PR=1
  1910.       Ink 0,0,0 : Bar 0,124 To 47,176 : Wait Vbl 
  1911.       Paste Bob 0,124,80 : Wait Vbl 
  1912.     Else 
  1913.       Ink 0,0,0 : Bar 273,124 To 318,176 : Wait Vbl 
  1914.       Paste Bob 273,124,Hrev(80) : Wait Vbl 
  1915.     End If 
  1916.     CL0P=ACL
  1917.     CL0PBIT=CL0PBIT+1
  1918.     If CL0PBIT>4
  1919.       CL0PBIT=0
  1920.       CL0P=CL0P+1
  1921.     End If 
  1922.     If CL0P>205
  1923.        CL0P=0
  1924.     End If 
  1925.  End If 
  1926.  If CL0P>=5
  1927.     If CL0P=5
  1928.        Rem begin messgae
  1929.        SX=98 : Gosub _TAKECLIP
  1930.        Bob 20,110,20,80
  1931.     End If 
  1932.     CL0P=CL0P+1
  1933.     If CL0P=25 : Bob Off 20 : CL0P=0 : CL0PBIT=0 : End If 
  1934.     '
  1935.  End If 
  1936.  '
  1937. Return 
  1938. '
  1939. _WINNINGSCREEN:
  1940.  '
  1941.  Screen 1 : Screen Hide 1 : Curs Off : Flash Off : Cls 0
  1942.  Bob Update On : Autoback 2
  1943.  '
  1944.  Del Bob 1 To 70
  1945.  '
  1946.  Load Iff FLNG$+"battle-ending.iff",1 : Screen Hide 1
  1947.  '  
  1948.  For T=0 To 3
  1949.   Get Bob 71+T,1+(T*70),135 To 1+(T*70)+68,243
  1950.  Next T
  1951.  '
  1952.  Screen 1
  1953.  Ink 0 : Bar 0,200 To 319,250
  1954.  '
  1955.  T1$="Upto the ol'Stage"
  1956.  T2$="Your Prize awaits"
  1957.  T3$="And your gift is "
  1958.  T4$="   Immortality   "
  1959.  '
  1960.  If WINNER=1 : Colour 6,CUL1 : End If 
  1961.  If WINNER=2 : Colour 6,CUL2 : End If 
  1962.  '
  1963.  Screen 0 : Get Palette 1
  1964.  Curs Off : Flash Off : Cls 0
  1965.  Colour 12,$0 : Rem eye shine off
  1966.  
  1967.  Screen Show 0
  1968.  '
  1969.  Screen 0
  1970.  Pen 1 : Paper 0
  1971.  RL=201
  1972.  CNT=0
  1973.  While CNT<160
  1974.   '
  1975.   If CNT=0 : IMG=72 : IMX=300 : End If 
  1976.   If CNT>0 and CNT<70 : IMX=IMX-2 : End If 
  1977.   If CNT=70 : IMG=71 : End If 
  1978.   If CNT>=100 and CNT<140 : Colour 12,Int(Rnd(4000)) : Colour 0,Int(Rnd(7)) : End If 
  1979.   If CNT=140 : Colour 12,$0 : Colour 0,$0 : End If 
  1980.   If CNT=105 : IMG=73 : IMX=IMX+25 : End If 
  1981.   If CNT=140 : IMG=74 : End If 
  1982.   '
  1983.   If CNT=10 : Locate 10,18 : Print T1$ : End If 
  1984.   If CNT=60 : Locate 10,19 : Print T2$ : End If 
  1985.   If CNT=100 : Locate 10,20 : Print T3$ : End If 
  1986.   If CNT=140 : Locate 10,21 : Print T4$ : End If 
  1987.   '
  1988.   Rem prepare screen 
  1989.   Screen 1
  1990.     Bob 1,IMX,26,IMG : Wait Vbl 
  1991.   Screen 0
  1992.   '
  1993.   If Mouse Key=1 : Wait 30 : End If 
  1994.   '
  1995.   Screen Copy 1,1,1,227,132 To 0,45,10 : Wait Vbl 
  1996.   CNT=CNT+1
  1997.   '
  1998.  Wend 
  1999.  '
  2000.  Fade 1 : Wait 15
  2001.  Screen Hide 0
  2002.  '
  2003.  Load Iff FLNG$+"battle-arena.iff",0 : Screen Hide 0 : Screen Display 0,,,320,190
  2004.  CL0P=1 : Gosub _CYCLECLIP
  2005.  Fade 1 : Wait 15
  2006.  Screen Show 0
  2007.  CXC=C(6)
  2008.  If WINNER=1 : C(6)=CUL1 : End If 
  2009.  If WINNER=2 : C(6)=CUL2 : End If 
  2010.  Gosub _GIVECOLOURS
  2011.  Wait 200
  2012.  Fade 1 : Wait 15
  2013.  Screen Hide : Screen Hide 0
  2014.  Screen 0 : Cls 0
  2015.  Screen 1 : Cls 0
  2016.  '
  2017.  C(6)=CXC
  2018.  '
  2019. Return 
  2020. '
  2021. ''' This last routine may be changed to include/omit music 
  2022. '
  2023. _MEDMAGIC:
  2024.  '
  2025.  ''''' If AA<>321 
  2026.  '''''  If AA=1 and MEDON=123 
  2027.  '''''    If((K$="m") or(K$="M")) and MUS=1 : K$="" : MUS=0 : Med Stop : End If       
  2028.  '''''    If((K$="m") or(K$="M")) and MUS=0 : K$="" : MUS=1 : Med Play : End If       
  2029.  '''''  End If      
  2030.  '''''  If AA=987 and MUS=1 and MEDON=123     
  2031.  '''''     Med Play       
  2032.  '''''  End If      
  2033.  ''''' Else       
  2034.  '''''  If MEDON=123      
  2035.  '''''    Med Load FLNM$+"Battle-Hunger.music",2      
  2036.  '''''  End If      
  2037.  ''''' End If         
  2038.  '
  2039. Return